Как ссылаться на имя ListBox, используя строку в Csharp

for (int i=1; i<4; i++)
{
    string buttonName = "button" + i;
    if (Controls[buttonName].BackColor = Color.Red)
    {
        Controls[buttonName].Enabled = false;
    }
}

Этот код работает отлично. Код проверяет 3 разные кнопки (button1, button2, button3) и, если их цвет красный, они становятся недоступными. На имя кнопки ссылается строка:

Controls[buttonName]

Есть ли способ ссылаться на ListBox, используя строку таким же образом? На что должны быть изменены элементы управления?

1 ответ

Если вы просто хотите просмотреть все списки, вы также можете использовать .OfType<T>()

foreach (ListBox lb in this.Controls.OfType<ListBox>())
{
    lb.Enabled = false;
}

... и это, конечно, будет работать так же для .OfType<Button>() без необходимости называть ваши элементы управления таким образом, чтобы перечислить их.

Другие вопросы по тегам