Можно ли преобразовать ListBox.SelectedObjectCollection в ListBox.ObjectCollection на С#? Если да, то как бы я поступил?
Преобразование ListBox.SelectedObjectCollection в ListBox.ObjectCollection?
comment
У меня есть два идентичных метода, за исключением того, что один из них принимает все элементы в списке (Добавить все принтеры), а другой добавляет только выбранные элементы (Добавить выбранные принтеры). Я хочу сделать это с перегрузкой, но вместо того, чтобы зацикливаться, чтобы поместить значения в массив, я хотел знать, могу ли я привести их обоих к чему-то.
- person ChristianLinnell   schedule 02.11.2010
Ответы (4)
У меня есть функция, которая принимает List<string>
.
Я могу передать как SelectedItems, так и Items, приведя их.
Попробуй это:
SelectedItems.Cast<string>().ToList()
Items.Cast<string>().ToList()
<string>
можно заменить другим типом объекта.
person
jhoanna
schedule
28.09.2012
Это невозможно.
Вместо этого следует использовать IList
.
Оба этих типа реализуют IList
, поэтому любой из них можно передать как IList
без явного приведения типов.
Если вы действительно хотите, вы можете создать новый ListBox.ObjectCollection
и добавить элементы из SelectedObjectCollection
.
person
SLaks
schedule
02.11.2010
как насчет ответа @ 341184?
- person Kiquenet; 04.05.2013
@Kiquenet: Он копирует, а не использует. Кроме того, он не использует
ObjectCollection
.
- person SLaks; 05.05.2013
Вот мой ответ: это работает для меня.
System.Windows.Forms.ListBox.SelectedObjectCollection lst =this.lstImage.SelectedItems;
List<string> selectedItems = new List<string>();
foreach (object obj in lst)
{
selectedItems.Add(obj.ToString());
}
person
Harsha
schedule
04.05.2011
Это мой ответ, который я использовал для преобразования проверенного списка в список.
CheckedListBox.CheckedItemCollection s= checkedListBox1.CheckedItems;
List<object> ns = new List<object>();
foreach (object ob in s)
{
ns.Add(ob);
}
listBox1.Items.AddRange(ns.ToArray());
person
Ram
schedule
29.03.2017