Если по какой-то причине вам не нужно привязывать один и тот же обработчик событий к 8+ текстовым полям в конструкторе, вы можете сделать это программно в событии загрузки формы:
private void MainForm_Load(object sender, EventArgs e)
{
foreach (Control maybeTextBox in Controls)
{
if (maybeTextBox is TextBox)
{
maybeTextBox.TextChanged += new EventHandler(maybeTextBox_TextChanged);
}
}
}
Единственная проблема с этим заключается в том, что если какой-либо из TextBox находится внутри другого элемента управления, вам нужно написать рекурсивный метод поиска, подобный этому:
public static Control[] GetControls(Control findIn)
{
List<Control> allControls = new List<Control>();
foreach (Control oneControl in findIn.Controls)
{
allControls.Add(OneControl);
if (OneControl.Controls.Count > 0)
allControls.AddRange(GetControls(oneControl));
}
return allControls.ToArray();
}
Вы можете вызвать этот метод в форме, поэтому исходный код станет:
foreach (Control maybeTextBox in GetControls(this))