PDA

View Full Version : مبتدی: جستجو در لیست باکس



civilmajor
جمعه 22 خرداد 1394, 11:12 صبح
سلام در فرم زیر یک دیکشنری اصطلاحات میخوام بنویسم و میخوام در تکست باکس کلمه ای که مینویسم اگر در لیست باکس وجود داره بهم نشون بده و مهم نباشه که اون کلمه در اول هست یا در وسط اصطلاح و نهایتا در ریچ باکسم با توجه به گزینه انتخابی در لیست باکس معنی اونو توی ریچ باکس نشون بده
لطفا راهنماییم کنید
خیلی ممنون132160

khokhan
جمعه 22 خرداد 1394, 11:43 صبح
سلام در فرم زیر یک دیکشنری اصطلاحات میخوام بنویسم و میخوام در تکست باکس کلمه ای که مینویسم اگر در لیست باکس وجود داره بهم نشون بده و مهم نباشه که اون کلمه در اول هست یا در وسط اصطلاح و نهایتا در ریچ باکسم با توجه به گزینه انتخابی در لیست باکس معنی اونو توی ریچ باکس نشون بده
لطفا راهنماییم کنید
خیلی ممنون132160

.................................................. ............


private void textBox1_TextChanged(object sender, EventArgs e)
{
int index = listBox1.FindString(this.textBox1.Text);
if (0 <= index)
{
listBox1.SelectedIndex = index;
}
}

civilmajor
جمعه 22 خرداد 1394, 12:04 عصر
این کد چکار میکنه؟

civilmajor
جمعه 22 خرداد 1394, 16:47 عصر
کسی نیست کمکم کنه؟
احساس میکنم کار خیلی ساده ایه اما نتونستم انجامش بدم
لطفا یکی کمک کنه
ممنون

mojtabamalaekeh
جمعه 22 خرداد 1394, 18:10 عصر
کد khokhan اولین موردی که با کلمه تایپ شده در textbox1 شروع شده رو انتخاب می کنه.
این کد هم اولین موردی که حاوی کلمه تایپ شده در textbox1 باشه رو انتخاب می کنه.


private void textBox1_TextChanged(object sender, EventArgs e)
{
for (int i = 0; i < listBox1.Items.Count; i++)
if (listBox1.Items[i].ToString().Contains(textBox1.Text))
{
listBox1.SelectedIndex = i;
break;
}
}

civilmajor
جمعه 22 خرداد 1394, 19:54 عصر
عالی بود
ممنون
حالا اگر بخوام گزینه های پیدا کرده رو فیلتر کنم و فقط اونارو نشون بده باید چکار کنم؟

mojtabamalaekeh
شنبه 23 خرداد 1394, 11:07 صبح
عالی بود
ممنون
حالا اگر بخوام گزینه های پیدا کرده رو فیلتر کنم و فقط اونارو نشون بده باید چکار کنم؟

فکر خوبیه. چون بیشتر از یکی پیدا میشه بهتره لیستو خالی کنید و فقط موارد منطبقو نشون بدین.

منبع داده رو یه آرایه توی حافظه بذارید (مثلا List یا Dictionary)، یعنی همه داده ها رو توی حافظه بارگذاری کنید
منبع داده رو به ازای هر بار تایپ کردن کاربر، فیلتر کنید
نتیجه ی فیلتر رو توی ListBox نشون بدین

برای این کارها از LINQ استفاده کنید خوبه.