跟踪窗口成为最后焦点

时间:2018-07-30 14:33:12

标签: vb.net winforms focus

我正在创建的VB.Net程序在TableLayoutPanel中动态创建面板,并向其中添加表单元素。我需要跟踪这些面板中最后一个要关注的是什么,并且碰到的是一堵砖墙。

我尝试为面板专注时创建事件类:

Private Sub Self_GotFocus(ByVal sender As Object, ByVal e As EventArgs) Handles Me.GotFocus
    GlobalController.Focus_Target = Me.Name
End Sub

每个Panel的类都继承自Windows.Forms.FlowLayoutPanel,这就是为什么我将其称为Me.GotFocus的原因。此外,GlobalController类只是用于保存程序全局变量的类。

现在我遇到的问题是,此事件似乎仅在我实际上删除面板时才触发。创建面板时,如果单击它或其中任何一个表单元素,则事件永远不会触发(我使用断点调试程序)。

我无法确切地弄清楚为什么它仅在我删除面板时触发,而在其他任何时间都不会触发。我应该使用另一个事件代替GotFocus吗?

1 个答案:

答案 0 :(得分:0)

在面板中使用.Enter事件,因为GotFocus仅与焦点控制相关(而不是父控件),主要是在设置UICues时。

请参见MSDN GotFocus