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

Cra*_*ger 2 .net user-controls

我有一个行为类似于选项卡控件的用户控件。选项卡标题是UserControl覆盖Paint事件以使它们看起来自定义的实例。

为了利用选项卡页上各种控件上的验证事件,当用户单击选项卡标题时,我们将焦点设置为TabHeader用户控件。

我注意到Control.Focus()有时会返回 false,但文档没有说明为什么Control.Focus()会返回 false,除了控件无法接收焦点之外。但我不知道为什么。

这是我所看到的:如果 myTabHeader UserControl不包含任何子控件,并且我myControl.Focus()MouseClick事件中调用,则 focus 返回 true。

如果 myTabHeader UserControl包含子控件并且我myControl.Focus()MouseClick事件中调用,则焦点返回 false。

如果 myTabHeader UserControl包含子控件,并且我myControl.subControl.Focus()myControl.MouseClick事件中调用,则 focus 返回 true。

有人可以解释一下吗?

Raz*_*zie 5

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

您可以尝试打电话Select()代替Focus(),看看是否有效。