Приведение коллекции ListBox.SelectedObjectCollection к коллекции ListBox.ObjectCollection?

2

Возможно ли сделать ListBox.SelectedObjectCollection в ListBox.ObjectCollection в С#? Если да, то как мне это сделать?

  • 1
    Что ты пытаешься сделать?
  • 1
    У меня есть два идентичных метода, за исключением того, что один из них принимает все элементы в списке («Добавить все принтеры»), а другой добавляет только выбранные элементы («Добавить выбранные принтеры»). Я хочу сделать это с перегрузкой, но вместо того, чтобы зацикливаться, чтобы поместить значения в массив, который я хотел знать, могу ли я привести их оба к чему-либо.
Теги:
casting
collections

5 ответов

9

У меня есть функция, которая принимает List<string>.

Я могу передать оба SelectedItems и Items, отбросив их.

Попробуйте следующее:

SelectedItems.Cast<string>().ToList()
Items.Cast<string>().ToList()

<string> может быть заменен другим типом объекта.

4

Это невозможно.

Вместо этого вы должны использовать IList.
Оба эти типа реализуют IList, поэтому вы можете передать один из них как IList без какой-либо явной кастинга.

Если вы действительно этого захотите, вы можете создать новый ListBox.ObjectCollection и добавить элементы из SelectedObjectCollection.

  • 0
    а как насчет @ 341184 ответа?
  • 0
    @Kiquenet: он копирует , а не кастует. Кроме того, он не использует ObjectCollection .
1

Вот мой ответ: он работает для меня.

System.Windows.Forms.ListBox.SelectedObjectCollection lst  =this.lstImage.SelectedItems;
List<string> selectedItems = new List<string>();

foreach (object obj in lst)
{
    selectedItems.Add(obj.ToString());
}
0

Это мой ответ, который я использовал для преобразования поля "Проверено" в поле списка

CheckedListBox.CheckedItemCollection s= checkedListBox1.CheckedItems;

        List<object> ns = new List<object>();

        foreach (object ob in s)
        {
            ns.Add(ob);
        }

        listBox1.Items.AddRange(ns.ToArray());
0
  List<YourDataType> YourDataTypeList = new List<YourDataType>();
  for (int i = 0; i < lbVectors.SelectedItems.Count; i++)
   {
        YourDataType v = lbVectors.SelectedItems[i] as YourDataType;
        YourDataTypeList .Add(v);
    }  

Ещё вопросы

Сообщество Overcoder
Наверх
Меню