我不打算在这里发布一堆代码,因为我认为这不是代码问题。 这是我原始问题的链接,如果您感兴趣,我已经显示了代码。 Code
正如测试一样,我创建了一个空白表单窗口(Form1.vb),并且没有代码传递给它,并且在打开时没有代码运行。如果我从MenuStrip控件或按钮控件执行Form1.Show(),窗口将打开并保持在顶部。现在,如果我从TreeView控件执行Form1.Show(),窗口将打开并使用TreeView控件进入窗口后面。
所以我的问题是,TreeView打开表单与按钮或其他控件有什么不同?
我正在使用基本的VB TreeView Controll,并且在TreeView的AfterSelect方法中调用新表单。
答案 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()