У меня есть следующий код для чтения всех элементов некоторых объектов 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
2 ответа
Использовать
PanelControls.Controls.OfType<CheckedListBox>()
Вам нужно убедиться, что текущий элемент управления действительно является CheckListBox
.
Что-то вроде этого было бы достаточно:
foreach (Control c in PanelControls.Controls)
{
if (c is CheckListBox)
{
// Do your actions
}
}
Или что-то вроде этого тоже может вам помочь:
foreach (var control in PanelControls.Controls.OfType<CheckListBox>())
{
...
}
Теперь вы просматриваете только элементы управления, которые на самом деле являются CheckListBox
.
Похожие вопросы
Новые вопросы
c#
C# (произносится как «see Sharp») — это высокоуровневый мультипарадигменный язык программирования со статической типизацией, разработанный Microsoft. Код C# обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, которое включает в себя .NET, .NET Framework, .NET MAUI и Xamarin среди прочих. Используйте этот тег для ответов на вопросы о коде, написанном на C#, или о формальной спецификации C#.