相关疑难解决方法(0)

在WinForms应用程序中找到集中控件的首选方法是什么?

找到当前在WinForms中接收用户(键盘)输入的控件的首选/最简单方法是什么?

到目前为止,我已经提出以下建议:

public static Control FindFocusedControl(Control control)
{
    var container = control as ContainerControl;
    return (null != container
        ? FindFocusedControl(container.ActiveControl)
        : control);
}
Run Code Online (Sandbox Code Playgroud)

从表单中,可以简单地称为(在.NET 3.5+中甚至可以将其定义为表单上的扩展方法) -

var focused = FindFocusedControl(this);
Run Code Online (Sandbox Code Playgroud)

这个合适吗?

是否有我应该使用的内置方法?

请注意,使用层次结构时,单次调用ActiveControl是不够的.想像:

Form
    TableLayoutPanel
        FlowLayoutPanel
            TextBox (focused)
Run Code Online (Sandbox Code Playgroud)

(formInstance).ActiveControl将返回对TableLayoutPanel的引用,而不是TextBox(因为ActiveControl似乎只是在控制树中返回直接活动的子节点,而我正在寻找叶子控件).

.net winforms

65
推荐指数
4
解决办法
5万
查看次数

标签 统计

.net ×1

winforms ×1