在WinForms应用程序中找到集中控件的首选方法是什么?
找到当前在WinForms中接收用户(键盘)输入的控件的首选/最简单方法是什么?
到目前为止,我已经提出以下建议:
public static Control FindFocusedControl(Control control){ var container = control as ContainerControl; return (null != container ? FindFocusedControl(container.ActiveControl) : control);}
从表单中,这可以简单地称为(在.NET 3.5+中甚至可以将其定义为表单上的扩展方法) -
var focused = FindFocusedControl(this);
这个合适吗?
是否有我应该使用的内置方法?
请注意,使用层次结构时,单次调用ActiveControl是不够的。想像:
Form TableLayoutPanel FlowLayoutPanel TextBox (focused)
(formInstance).ActiveControl将返回对TableLayoutPanel的引用,而不是TextBox(因为ActiveControl似乎只是在控制树中返回直接活动的子节点,而我正在寻找叶子控件)。
慕姐4208626