将重点设置为先前的控件



我有一个分离器面板失去控制的问题,需要将其设置回。

我的应用程序使用拆分范围;当我的控件将数据加载到分离器的面板2中时,焦点将转移到面板1。

有两个面板中的控件,因为Tab和Shift Tab需要在面板和分离器上使用。

都需要使用。

要将其设置回它,在gotFocus中添加了一个控制对象,以用于Panel2 Control,然后在面板1的_enter中使用此对象将焦点放回panel2中。但是,我需要重置此控制对象。我在_leave of Panel2中无法做到这一点,因为将重新控制后将被调用。

我认为您应该实施这些行为的状态管理,以同步控制事件。例如,您可能会使用与控制对象状态相关的一些标志,然后在您的gotFocus事件中进行一些测试来验证其值...



在评论中进行了一些清理后进行更新。

在MSDN关于Control与焦点相关的事件上,您会发现" Enter"事件始终是事件链中的第一个事件,第二个事件始终是" GotFocus"。请参阅:https://msdn.microsoft.com/it-it/library/system.windows.forms.control.gotfocus(v = vs.110).aspx

您可以在"输入"事件中评估控制焦点状态变量,并在" gotFocus"事件中分配它,避免在休假事件中重置eantything。

以这种方式,您应该始终知道每个控件的" Enter"处理程序中的先前控件(您可以将同一处理程序用于所有控件)并提出您的要求。

如果您需要在几个面板中管理一些拆分控件有重点。

我尝试了多个解决方案,只要在panel2 goins中coption cocke focus中,最安全的选项似乎都会关闭面板1控件的选项卡控件,并在离开焦点时将其重新打开。这样可以确保应用程序重点不会转移到面板1。这还将确保我的控件可以进行表格和shift_tabbing。将焦点强行返回到Panel2 Triggers gotFocus()多次中的控制范围

多次设置焦点。

相关内容

  • 没有找到相关文章

最新更新