C#: перебор редакторов и обращение к редактору (textbox) по числу в имени (textbox01....textbox99)

Рейтинг: 0Ответов: 1Опубликовано: 02.02.2023

Имеется некая Форма в которой размещены редакторы Sigma (TextBox) и MDA (ChekBox). Размешены они группами:

Sigma01, MDA01
Sigma02, MDA02
...
Sigma99, MDA99

Суть вопроса: при установке для чек-бокса значения Checked, редактор Sigma01 должен становится недоступным. Сейчас у меня это реализовано событием:

private void mda01_CheckedChanged(object sender, EventArgs e)
    {if(mda01.Checked) {Sigma01.Enabled = false; }else {Sigma01.Enabled = true;}}

Повторять этот же код для всех 99 групп явно как-то неправильно. Есть ли способ запустить цикл перебора редакторов и при проверке чек-бокса, например с 01 в имени, обращаться к текст-боксу соответствующим номером?

Ответы

▲ 1Принят

Поместите каждую пару в GroupBox:

введите сюда описание изображения

После этого создайте обработчик события

private void SigmaCheckBox_CheckedChanged(object sender, EventArgs e) { }

и назначьте его для события CheckedChanged у каждого элемента CheckBox.

Далее обновите код обработчика:

private void SigmaCheckBox_CheckedChanged(object sender, EventArgs e)
{
    var checkBox     = (CheckBox)sender;
    var groupBox     = (GroupBox)checkBox.Parent;
    var sigmaTextBox = groupBox.Controls.OfType<TextBox>().Single();
    
    sigmaTextBox.Enabled = !checkBox.Enabled;
}

P.S.

Не задумывались про автоматическую генерацию 100 групп вместо создания их вручную?