WinForm: представляет один элемент ListBox в выражении foreach - PullRequest
3 голосов
/ 26 августа 2010

Как мне представить один элемент в списке в выражении foreach?

Я пробовал ListBoxItem, но System.Windows.Controls не считается допустимым пространством имен в моей среде .Net (версия 4).

foreach(ListBoxItem item in listBoxObject.Items)
{
    ...
}

Ответы [ 3 ]

1 голос
/ 26 августа 2010

Вы обнаружите, что listBoxObject.Items - это коллекция объектов, содержащая ваши объекты данных, а не элементы управления.

Например, если я свяжу список со списком так:

listBox1.DataSource = new string[] { "asdf", "qwerty" };

Тогда свойство .Items дает ObjectCollection, содержащее две строки.

1 голос
/ 26 августа 2010

Обычно, когда кто-то просматривает элементы списка, он ищет, выбран ли он или нет. Если это так, попробуйте использовать listBoxObject.SelectedItems вместо listBoxObject.Items. Это вернет только элементы, которые были выбраны.

Насколько я могу судить, объекта ListBoxItem нет. Вам нужно будет использовать Объект для каждого элемента (это то, что выбирает элементы и элементы). Объект представляет значение элемента, поэтому используйте его соответствующим образом (то есть, если объект является строкой, используйте его как строку, но если объект является сложным объектом, используйте его как таковой).

Пример кода:

foreach (Object listBoxItem in listBoxObject.SelectedItems)
{
  //Use as object or cast to a more specific type of object.
}

И если вы знаете, какой объект ВСЕГДА будет, вы можете привести его в цикл foreach. (Предупреждение: если вы ошибаетесь, это вызовет исключение). Этот пример, если в список вводятся только строки.

foreach (String listBoxItem in listBoxObject.SelectedItems)
{
  //Use as String. It has already been cast. 
}
1 голос
/ 26 августа 2010

foreach(Object item in listBoxObject.Items){ ... }

http://msdn.microsoft.com/en-us/library/system.windows.forms.listbox.objectcollection.item.aspx

ListBox.Items имеет тип System.Windows.Forms.ListBox.ObjectCollection System.Windows.Forms.ListBox.ObjectCollection.Item имеет тип Object. НТН.

...