Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > listBox неправильное удаление элемента


Автор: N1kk 7.11.2011, 06:03
Вобщем вопрос тупость великая... Помогите решить проблему.
Есть скажем коллекция элементов в listBox1. Необходимо оставить список только со встречающимся словом указанным в textBox1.

Код

if (textBox1.Text.Length != 0)
{
  listBox1.BeginUpdate();
  for (int i = 0; i < listBox1.Items.Count; i++)
    if (listBox1.Items[i].ToString().Contains(textBox1.Text) != true) listBox1.Items.RemoveAt(i);
  listBox1.EndUpdate();
}


Почему то удаляет каждый второй элемент. C IndexOf тоже самое самое  smile 

Автор: RastaDja 7.11.2011, 08:37
Код

using System.ComponentModel;

//...
public MainWindow()
{
//...
   List<String> StrList = new List<String>();
   StrList.Add("str1");
   StrList.Add("str2");
   StrList.Add("strABC");
   StrList.Add("ABCstr");
   StrList.Add("strABCstr");
   ICollectionView cvStr = CollectionViewSource.GetDefaultView(StrList);
   cvStr.Filter = Filter2;
   listBox1.ItemsSource = cvStr;
}

public bool Filter2(object de)
{
   String order = de as String;
   if (order.Contains("ABC"))      //  содержит подстроку
   {
      return true;
   }
   else
   {
      return false;
   }
}
//...

Автор: Voyager 7.11.2011, 10:43
Так если вы удаляете, счетчик i сбрасывайте i--.

Автор: N1kk 7.11.2011, 11:42
Voyager
Спасибо, решил проблему.  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)