PDA

View Full Version : شناسایی ایتم های تکراری در listbox



saeedhushmand
چهارشنبه 07 تیر 1391, 14:43 عصر
من در listboxم یک سری ایتم وارد می شه کاری کرد که بعد از وارد شدن ایتم ها ، ایتم های تکراری شناسایی و همه ی اونا به جز یکی حذف بشه

امکان داره در یک ان جندین ایتم به لیست باکس من اضافه بشه پس فکر کنم نتونم قبل از ورود ایتم ها اونا رو شناسایی کنم اگر هم می شه لطفا کمک کنید

shahin60
چهارشنبه 07 تیر 1391, 14:48 عصر
کد:

if (listBox1.Items.Contains("textbox.text") )
{
listBox1.Items.Add(textbox.text);
}

saeedhushmand
چهارشنبه 07 تیر 1391, 15:02 عصر
دوست عزیز به کد زیر یک نگاه بنداز ...

for (int i = 0; i < 2; i++)
{
var items = from item in linl
where item.Contains(a.SelectedText)
select item;
foreach (var item in items)
{
var parts = item.Split(newchar[] { '|' });
words.Add(newWord() { Text = parts[0], AttachedText = parts[1], IsShellCommand = (parts[2] == "true") });
listBox1.Items.Add(parts[1]);
a.Select(4, 7);
}


اگر نگاه کرده باشی متوجه شدی که من دارم از linq استفاده می کنم که شرطو در مجموعه چک می کنه و ممکنه چندین ایتم به لیست باکس اضافه کنه و همان طور که می بینی کد درون یک حلقه for قرار داره که دو بار شرط برسی می کنه حالا امکان داره کلمه ای توی دو شرط قرار بگیره و 2 بار به لیست باکس add بشه و به نظر من امکان شناسایی هنگام add کردن وجود نداره و باید بعد اضافه شدن ایتم های تکراری شناسایی ، حذف بشوند

Mahmoud.Afrad
چهارشنبه 07 تیر 1391, 19:50 عصر
به دو صورت میتونید این کار رو انجام بدید
یکی اینکه هربار برای اضافه کردن چک کنید که آیتم تکراری درج نشه.مثال
if (!(listBox1.Items.Contains(textBox2.Text)))
listBox1.Items.Add(textBox2.Text);
راه دیگه اینکه در مجموعه ای که قراره اضافه کنید موارد تکراری رو حذف کنید و بعد یکجا اضافه کنید. مثال
List<string> items = new List<string>() { "a", "b", "c", "a" };
listBox1.Items.AddRange(items.Distinct().ToArray() );