检测嵌套的TableLayoutPanel中所有文本框的按键事件
本文关键字:文本 事件 嵌套 TableLayoutPanel 检测 | 更新日期: 2023-09-27 18:15:44
我有一系列嵌套的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
和....我需要把这个指向我的循环吗? - 或者我在主布局面板内递归地循环每个布局面板? 还是整个想法都错了?!!?
谢谢。
private void Recursive(TableLayoutPanel tableCriterias)
{
foreach (var control in tableCriterias.Controls)
{
var textBox = control as TextBox;
if (textBox != null)
textBox.KeyPress += new KeyPressEventHandler(this.ApplyFiltersOnEnterKey);
else if(control is TableLayoutPanel)
Recursive(control as TableLayoutPanel);
}
}
为parent TableLayoutPanel