我试图弄清楚为什么这两行代码有时会返回不同的值:
var focus = FindFocusedControl(_targetForm).Name;
var active = _targetForm.ActiveControl.Name;
FindFocusedControl
来自here:
private static Control FindFocusedControl(Control control)
{
var container = control as ContainerControl;
while (container != null)
{
control = container.ActiveControl;
container = control as ContainerControl;
}
return control;
}
我的active
只是最不能被钻进的人吗?是否取决于实际具有焦点的控件是否位于UserControl
?
答案 0 :(得分:1)
_targetForm.ActiveControl
将在具有焦点或它的一个子控件具有焦点的窗体上返回该控件。
您的FindFocusedControl
实现也执行相同的操作,但是递归检查子控件,直到子控件到达具有焦点的控件,然后将其返回。
因此,对于直接在窗体上的控件,它们将返回相同的值,但是对于堆叠在面板或其他容器上的控件,返回的值将不同。