这是我在任何网站上的第一篇问题帖子,希望你能帮助我,欢迎我。我正在开发一个vb.net windows应用程序,我在我的主窗体中使用treeview作为软件的菜单。我想通过按Enter或点击treenodes来打开新表格。当我在treenode上按Enter键时,一切正常,但是当我点击主窗体后面打开的treenode新表格时。请帮助我如何在主窗体前面显示新窗体(设置TopMost属性或MDIParent不适合我的应用程序)。 提前致谢
Private Sub TreeView1_NodeMouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.TreeNodeMouseClickEventArgs) Handles TreeView1.NodeMouseClick
If e.Node.Text = "Purchase" Then
Dim frm As New frm_purchase
frm.Show()
End If
End Sub
Private Sub TreeView1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TreeView1.KeyDown
If e.KeyData = Keys.Enter Then
If TreeView1.SelectedNode.Text = "Purchase" Then
Dim frm As New frm_purchase
frm.Show()
End If
End If
End Sub
答案 0 :(得分:1)
.Show()
方法has one overload表示表单的所有者。尝试使用此而不是默认值:
Private Sub TreeView1_NodeMouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.TreeNodeMouseClickEventArgs) Handles TreeView1.NodeMouseClick
If e.Node.Text = "Purchase" Then
Dim frm As New frm_purchase
frm.Show(ParentForm)
End If
在这种情况下, ParentForm
指的是您的MDI容器。
您可以使用此方法显示非模态表单。当你使用它 方法,表单的Owner属性设置为owner。非模态的 表单可以使用Owner属性来获取有关拥有的信息 形成。调用此方法与设置Owner属性相同 非模态然后调用Show()方法。
答案 1 :(得分:0)
试试这个:
Private Sub TreeView1_NodeMouseClick(sender As Object, e As TreeNodeMouseClickEventArgs) Handles TreeView1.NodeMouseClick
Dim frm As New frm_purchase
frm.Show()
End Sub
Private Sub frm_purchase_Shown(sender As Object, e As EventArgs) Handles MyBase.Shown
Me.TopMost = False
End Sub
Private Sub frm_purchase_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Me.TopMost = True
End Sub
此解决方案将使您的表单在首次创建时显示在顶部,但如果这是您想要的行为,则不会始终与之前的表单重叠。否则只需将新表单的所有者设置为当前表单就足够了(根据Hanlet的回答)