У меня есть ряд вложенных TableLayoutPanel
элементов управления, каждый из которых содержит множество TextBox
элементов управления.
Я думаю, что безумно делать событие нажатия клавиши для каждого из текстовых полей, поэтому я пытаюсь создать общий метод события, а затем применить событие для всех текстовых полей в событии FormLoad
. Я хочу посмотреть, нажал ли пользователь клавишу Enter
в любом из этих текстовых полей.
Это мой обычный метод (надеюсь, в этом нет ничего плохого!):
private void ApplyFiltersOnEnterKey(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)13)
{
tsApplyFilters_Click(this, null);
}
}
И у меня есть следующий код в Load
событии моей формы:
//Applying common event for all textboxes in filter options!
foreach (var control in tableCriterias.Controls)
{
var textBox = control as TextBox;
if (textBox != null)
textBox.KeyPress += new KeyPressEventHandler(this.ApplyFiltersOnEnterKey);
}
Ну, может быть, вы уже догадались, коды выше не работает! Я могу перечислить проблемы, о которых могу подумать:
tableCriterias
, который является родительским TableLayoutPanel
, и все остальные панели макетов находятся внутри него, находятся ли они внутри серии Panel
SplitContainer
и .... Мне нужно указать это в моем цикле?
- Или я рекурсивно зацикливаюсь на каждой макетной панели внутри главной макетной панели?
- Или вся идея неверна? !!?
Спасибо.