UserControl Focus Issue - Focus()有时会返回false
问题描述:
我有一个用户控件,其行为与选项卡控件类似。 选项卡标题为UserControl
实例,它们将覆盖Paint
事件以使它们看起来很自定义。UserControl Focus Issue - Focus()有时会返回false
为了利用我们标签页上各种控件的验证事件,当用户点击标签页眉时,我们将焦点设置为TabHeader
用户控件。
我注意到Control.Focus()
有时会返回false,但文档并没有说明为什么Control.Focus()
将永远返回false而不是控件无法获得焦点。但我不知道为什么。
这是我看到: 如果我TabHeader
UserControl
不包含任何的子控件,我叫myControl.Focus()
从MouseClick
事件,焦点返回true。
如果我的TabHeader
UserControl
包含子控件,并且我从MouseClick
事件中调用myControl.Focus()
,则焦点返回false。
如果我的TabHeader
UserControl
包含子控件,并且我从myControl.MouseClick
事件中调用myControl.subControl.Focus()
,则focus返回true。
有人可以解释这一点吗?
答
在UserControl
上调用Focus()
选择该用户控件的第一个子控件。那的确会解释你的行为。
你可以尝试拨打Select()
而不是Focus()
,看看是否有效。
尽管这个答案是几年前,该解决方案为我工作。我点击了一个树形视图上的节点,并且根据用户是否正在添加,编辑或删除而启用了用户控件,但用户控件中的另一个控件将需要焦点。 Select()像魅力一样工作。谢谢。 – MikeMalter 2011-05-23 22:15:43