为什么我的新形式会落后于开场白?

时间:2014-09-26 13:19:22

标签: vb.net winforms

我不打算在这里发布一堆代码,因为我认为这不是代码问题。 这是我原始问题的链接,如果您感兴趣,我已经显示了代码。 Code

正如测试一样,我创建了一个空白表单窗口(Form1.vb),并且没有代码传递给它,并且在打开时没有代码运行。如果我从MenuStrip控件或按钮控件执行Form1.Show(),窗口将打开并保持在顶部。现在,如果我从TreeView控件执行Form1.Show(),窗口将打开并使用TreeView控件进入窗口后面。

所以我的问题是,TreeView打开表单与按钮或其他控件有什么不同?

我正在使用基本的VB TreeView Controll,并且在TreeView的AfterSelect方法中调用新表单。

3 个答案:

答案 0 :(得分:2)

如果使用键盘导航选择节点,则AfterSelect有效,但在使用鼠标时它不起作用,因为鼠标捕获会强制父窗体保持焦点。您必须在 AfterSelect事件之后运行代码

Private Sub TreeView1_AfterSelect(sender As Object, e As TreeViewEventArgs) _
                                  Handles TreeView1.AfterSelect
  Me.BeginInvoke(New Action(Sub()
                              Dim f2 As New Form2
                              f2.Show(Me)
                            End Sub))
End Sub

答案 1 :(得分:0)

使用Form.Show(parentForm)选项,这将始终将新表单放在旧表单之上。

答案 2 :(得分:0)

你试过Form1.ShowDialog()吗?或者如果您不想将其显示为对话框,则应使用:

Form1.Show()
Form1.BringToFront()