У меня есть следующий код для чтения всех элементов некоторых объектов checklistbox на панели. На этой панели также есть некоторые другие элементы управления, такие как ярлыки. После правильного чтения некоторых элементов отображается сообщение об ошибке. Не могли бы вы помочь мне, как исправить код: Большое спасибо, что продвинулось.

    foreach (CheckedListBox chb in PanelControls.Controls)
    {
        foreach (var itm in chb.Items)
        {
            MessageBox.Show(itm.ToString());
        }
    }

Ошибка: невозможно привести объект типа 'System.Windows.Forms.Label' к типу 'System.Windows.Forms.CheckedListBox

c#
0
KOMAEI 21 Мар 2014 в 21:14

2 ответа

Лучший ответ

Использовать

PanelControls.Controls.OfType<CheckedListBox>()
1
Darren Young 21 Мар 2014 в 21:18
Спасибо за вашу помощь.
 – 
KOMAEI
21 Мар 2014 в 21:31

Вам нужно убедиться, что текущий элемент управления действительно является CheckListBox.

Что-то вроде этого было бы достаточно:

foreach (Control c in PanelControls.Controls) 
{ 
  if (c is CheckListBox) 
  { 
   // Do your actions
  }
}

Или что-то вроде этого тоже может вам помочь:

foreach (var control in PanelControls.Controls.OfType<CheckListBox>())
{
   ...
}

Теперь вы просматриваете только элементы управления, которые на самом деле являются CheckListBox.

0
Andrew Backes 21 Мар 2014 в 21:22