UserControl焦点问题 - Focus()有时会返回false

时间:2008-12-30 19:55:56

标签: .net user-controls

我有一个用户控件,其行为类似于制表符控件。 标签页标题为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。

有人可以解释一下吗?

2 个答案:

答案 0 :(得分:4)

Focus()上调用UserControl选择该UserControl的第一个子控件。这确实可以解释你的行为。

您可以尝试拨打Select()而不是Focus(),看看是否有效。

答案 1 :(得分:1)

您是否尝试过“Control.ContainsFocus”?如果任何子控件都关注它,则应该返回true。 MSDN Link

谢谢, 詹姆斯

相关问题