C#: перебор редакторов и обращение к редактору (textbox) по числу в имени (textbox01....textbox99)
Имеется некая Форма в которой размещены редакторы 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 групп вместо создания их вручную?
