我有一个用户控件,其行为类似于制表符控件。
标签页标题为UserControl
个实例,可覆盖Paint
个事件,使其看起来是自定义的。
为了在我们的标签页上的各种控件上利用Validating事件,当用户点击标签页时,我们将Focus设置为TabHeader
用户控件。
我注意到Control.Focus()
有时会返回false,但文档没有说明为什么Control.Focus()
将返回false而不是控件无法获得焦点。但我不知道为什么。
这是我看到的:
如果我的TabHeader
UserControl
不包含任何子控件,并且我从myControl.Focus()
事件中调用MouseClick
,则焦点返回true。
如果我的TabHeader
UserControl
包含子控件,并且我从myControl.Focus()
事件中调用MouseClick
,则焦点返回false。
如果我的TabHeader
UserControl
包含子控件,并且我从myControl.subControl.Focus()
事件中调用myControl.MouseClick
,则焦点返回true。
有人可以解释一下吗?
答案 0 :(得分:4)
在Focus()
上调用UserControl
选择该UserControl的第一个子控件。这确实可以解释你的行为。
您可以尝试拨打Select()
而不是Focus()
,看看是否有效。
答案 1 :(得分:1)
您是否尝试过“Control.ContainsFocus”?如果任何子控件都关注它,则应该返回true。 MSDN Link
谢谢, 詹姆斯