2008-12-30 41 views
2

我有一个用户控件,其行为与选项卡控件类似。 选项卡标题为UserControl实例,它们将覆盖Paint事件以使它们看起来很自定义。UserControl Focus Issue - Focus()有时会返回false

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

我注意到Control.Focus()有时会返回false,但文档并没有说明为什么Control.Focus()将永远返回false而不是控件无法获得焦点。但我不知道为什么。

这是我看到: 如果我TabHeaderUserControl不包含任何的子控件,我叫myControl.Focus()MouseClick事件,焦点返回true。

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

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

有人可以解释这一点吗?

回答

4

UserControl上调用Focus()选择该用户控件的第一个子控件。那的确会解释你的行为。

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

+0

尽管这个答案是几年前,该解决方案为我工作。我点击了一个树形视图上的节点,并且根据用户是否正在添加,编辑或删除而启用了用户控件,但用户控件中的另一个控件将需要焦点。 Select()像魅力一样工作。谢谢。 – MikeMalter 2011-05-23 22:15:43

1

你试过“Control.ContainsFocus”吗?如果有任何子控件关注它,则应该返回true。 MSDN Link

谢谢, 詹姆斯