PDA

View Full Version : سوال: انتقال اطلاعات فرد به همراه عکس به listview ای در فرم دیگر



alinoori76
سه شنبه 03 دی 1398, 01:18 صبح
سلام. فابل رو کامل گذاشتم . 2 تا فرم دارم که یکی اطلاعات فردی رو به همراه عکس میگیره و باید به فرم دیگری بفرسته و در یک لیست ویو نمایش داده بشه البته شرح داخل فایل هست. با تشکر از توجه شما
151163

mmbguide
سه شنبه 03 دی 1398, 14:56 عصر
سلام

شرمنده من دسترسی به برنامه ندارم. ولی میتونید یک تابع سراسری در برنامه تعریف کنید و بعد در فرم اول اون تابع را فراخوانی کنید تا دستورات رو انجام بده و بعد بررسی کنه که اگر فرم دوم باز بود اون رو در فرم دوم نمایش بده.

the king
سه شنبه 03 دی 1398, 17:01 عصر
سلام. فابل رو کامل گذاشتم . 2 تا فرم دارم که یکی اطلاعات فردی رو به همراه عکس میگیره و باید به فرم دیگری بفرسته و در یک لیست ویو نمایش داده بشه البته شرح داخل فایل هست. با تشکر از توجه شما
151163

یک روال نامگذاری، هر چی که باهاش راحت هستید یا اصولی میدونید رو انتخاب کنید و کل کد رو مطابق همون اصول پیش برید، یعنی اینطوری نباشه که یکجا مشخصه رو با حروف بزرگ تعریف کنید، یکجا کوچیک.
هر شیء ای هم که Dispose شدنی باشه، مثل Form ها، رو هر وقت دیگه لازم نداشتید یا با متد Dispose آزاد کنید یا داخل بلوک using قرار بدید تا خودکار Dispose بشه.
هر جا هم که با فایل و سیستم فایل سر و کار دارید، مثل Image.FromFile، بهتره که با try catch خطاهای احتمالی رو تحت کنترل دربیارید.
به اون شیوه کد نویسی ContactEditor.cs توجه کنید که هم برای ایجاد کردن Contact جدید و هم ویرایش Contact بکار میره.
از BackgroundImage استفاده کردم چون قابلیت Zoom رو بهش دادم تا تصویر رو در بزرگترین ابعاد ممکن داخل کادر PictureBox نشون بده، بدون اینکه نسبت افقی به عمودی تصویر بهم بخوره.

151167

alinoori76
چهارشنبه 04 دی 1398, 12:21 عصر
سلام و سپاس از توجه شما و تشکر فراوان بابت توضیحات دقیقی که دادید. فقط ی سوال وقتی بخواهیم ی لیست رو حذف کنیم ی مسج باکس سوال بپرسه و آیا با ی شرط میشه در صورت کنسل شدن مسج باکس. لسیت انتخاب شده حذف نشه؟

the king
چهارشنبه 04 دی 1398, 13:21 عصر
سلام و سپاس از توجه شما و تشکر فراوان بابت توضیحات دقیقی که دادید. فقط ی سوال وقتی بخواهیم ی لیست رو حذف کنیم ی مسج باکس سوال بپرسه و آیا با ی شرط میشه در صورت کنسل شدن مسج باکس. لسیت انتخاب شده حذف نشه؟

بله. چرا که نه. در اون رخداد Click دکمه کد رو داخل یک شرط ...if (MessageBox.Show قرار می دهید :

if (MessageBox.Show(this, "پیام", "عنوان", MessageBoxButtons.YesNo
, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2, MessageBoxOptions.RtlReading) == DialogResult.Yes)
{
.
.
.
}

alinoori76
پنج شنبه 05 دی 1398, 13:52 عصر
بله. چرا که نه. در اون رخداد Click دکمه کد رو داخل یک شرط ...if (MessageBox.Show قرار می دهید :

if (MessageBox.Show(this, "پیام", "عنوان", MessageBoxButtons.YesNo
, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2, MessageBoxOptions.RtlReading) == DialogResult.Yes)
{
.
.
.
}


بسیار سپاسگزارم . ممنون از توضیحاتتون. من چون مبتدی هستم سوال زیاد میپرسم شما به بزرگواری خودتون ببخشید اگه یموقع سوالاتم خنده دارن.

alinoori76
پنج شنبه 05 دی 1398, 20:17 عصر
ببخشید اگه سوالاتم خیلی مبتدیانه است . آیا میشه از داخل همین لیست ویور حرفی را جستجو کنیم و داخل همین لیست ویور نتیجه را ببینیم و بعد از خالی کردن تکس باکس جستجو دوباره اطلاعات قبلی لیست ویور را ببینیم
من داخل رخداد text_chenge تکس باکس کد زیر رو نوشتم Erore نداره ولی کاری انجام نمیده . اگه ممکنه ی نظر بدید مشکلش چیه




if (textBoxSEARCH.Text == "")
{
return;
}
for (int i = 0; i < listView1.Items.Count; i++)
{
for (int j = 0; j < listView1.Columns.Count; j++)
{
li = listView1.Items[i].SubItems[j].Text;
bool a = li.Contains(textBoxSEARCH.Text);
if (a == true)
{
listView1.Items.Add((ListViewItem)listView1.Items[i].Clone());
break;
}
}
}

[/LTR_INLINE][/CSHARP][/CSHARP]

the king
پنج شنبه 05 دی 1398, 20:31 عصر
ببخشید اگه سوالاتم خیلی مبتدیانه است . آیا میشه از داخل همین لیست ویور حرفی را جستجو کنیم و داخل همین لیست ویور نتیجه را ببینیم و بعد از خالی کردن تکس باکس جستجو دوباره اطلاعات قبلی لیست ویور را ببینیم

بله، از اونجایی که همه اطلاعات داخل Program.Contacts قرار داره و همیشه در دسترس ما است، به ListView وابسته نیستیم و پاک کردن محتویات ListView و نمایش دادن گزینشی مشکلی ایجاد نمی کنه.

private void textBox1_TextChanged(object sender, EventArgs e)
{
listView1.Items.Clear();
foreach (var contact in Program.Contacts)
{
if ((textBox1.TextLength > 0)
&& (contact.Name.IndexOf(textBox1.Text) == -1)
&& (contact.Family.IndexOf(textBox1.Text) == -1))
{
continue;
}
var item = new ListViewItem(new string[] { contact.Name, contact.Family, contact.Phone, contact.Address });
item.Tag = contact;
listView1.Items.Add(item);
}
UpdateButtons();
}

the king
پنج شنبه 05 دی 1398, 20:38 عصر
ببخشید اگه سوالاتم خیلی مبتدیانه است . آیا میشه از داخل همین لیست ویور حرفی را جستجو کنیم و داخل همین لیست ویور نتیجه را ببینیم و بعد از خالی کردن تکس باکس جستجو دوباره اطلاعات قبلی لیست ویور را ببینیم
من داخل رخداد text_chenge تکس باکس کد زیر رو نوشتم Erore نداره ولی کاری انجام نمیده . اگه ممکنه ی نظر بدید مشکلش چیه




if (textBoxSEARCH.Text == "")
{
return;
}
for (int i = 0; i < listView1.Items.Count; i++)
{
for (int j = 0; j < listView1.Columns.Count; j++)
{
li = listView1.Items[i].SubItems[j].Text;
bool a = li.Contains(textBoxSEARCH.Text);
if (a == true)
{
listView1.Items.Add((ListViewItem)listView1.Items[i].Clone());
break;
}
}
}

[/LTR_INLINE][/CSHARP][/CSHARP]

شما وقتی می توانید داخل حلقه از منبعی استفاده کنید که منبع داده تون پایدار باشه مثلا در یک listView جستجو کنید و در listView دیگری نتیجه رو درج کنید. شما داخل خود حلقه ای که از listView1 استفاده می کنه listView1 رو تغییر میدید، هم برای پاک کردن محتویات قبلی اش مشکل پیدا می کنید (چون اگر پاکش کنید دیگه داده ای نیست که داخلش جستجو کنید) و هم اگر اون listView به دلیل جستجوی قبلی کوچکتر شده باشه به جستجو بین همون داده ها محدود شدید و دیگه همه داده ها رو جستجو نمی کنید.

alinoori76
پنج شنبه 05 دی 1398, 20:50 عصر
ببخشید متن نوشته شما از آخر به اوله ولی به سختی خوندمش . پس امکان نداره این کار بشه
خیلی خیلی لطف کردید