【发布时间】:2014-09-17 13:38:17
【问题描述】:
我有下一个情况:
- 有一个带有
Form的客户端应用程序 -
Form包含一些TabControl的 -
TabPage和TabControl有不同的控件 - 当用户单击任何控件时,我需要激活作为控件父级的
TabPage。为此,我使用TabPageEnter事件 - 当
TabPage被激活时,我需要向服务器应用发出请求,并将焦点放在隐藏的TextBox上以禁用 UI
问题是,当我点击另一个TabPage 上的Button 时,在TabPage.Enter 事件处理程序中,我将焦点放在隐藏的TextBox 上,看起来像Button 点击事件没有足够的时间来处理。当我设置计时器并在 100 毫秒后处理 TabPage.Enter 事件时,Button 点击事件似乎被很好地触发了。所有控件都发生了同样的事情:CheckBox 没有被检查,RadioButton 也是。我不想使用计时器,因为这不是一个稳定的解决方案。
有什么想法可以让TabPage 在我将注意力集中到隐藏的TextBox 之前处理所有鼠标事件吗?我尝试使用Application.DoEvents(),但没有帮助。
【问题讨论】:
-
您正在尝试执行错误的事件。相反,请使用
TabControl的Selecting或Selected事件,具体取决于您是否要出于任何原因取消更改选项卡。 -
谢谢,但这不符合我的需要。当您不更改活动页面时,不会触发
TabControl的Selecting或Selected事件。假设焦点位于TabControl之一,我按下另一个TabControl的活动TabPage的Button。然后整个活动页面发生变化,但Selected事件当然不会被触发。 -
你说的是
TabControl嵌套在另一个TabControl中还是多个TabControls并排? -
多个,并排。
-
那么我的回答仍然适用,但您需要使用
TabControls 的Enter和Leave事件在您从一个更改为另一个时收到通知。
标签: c# winforms button focus tabcontrol