.NET模拟节点在树视图中单击
VB2010我在树视图的NodeMouseClick中有一个非常好的例程,它根据用户单击的节点隐藏/显示表单中的面板。简化版:.NET模拟节点在树视图中单击,.net,click,treeview,treenode,mouseclick-event,.net,Click,Treeview,Treenode,Mouseclick Event,VB2010我在树视图的NodeMouseClick中有一个非常好的例程,它根据用户单击的节点隐藏/显示表单中的面板。简化版: Private Sub tvw_NodeMouseClick(sender As Object, e As System.Windows.Forms.TreeNodeMouseClickEventArgs) Handles tvw.NodeMouseClick Dim pNode As TreeNode = e.Node 'get the no
Private Sub tvw_NodeMouseClick(sender As Object, e As System.Windows.Forms.TreeNodeMouseClickEventArgs) Handles tvw.NodeMouseClick
Dim pNode As TreeNode = e.Node 'get the node that was clicked
Dim nodeName As String = pNode.Name 'get the name of the node
Select Case nodeName.ToLower
Case "gen"
pnlGeneral.Visible = True
pnlOrigin.Visible = False
Case "ogn"
pnlGeneral.Visible = False
pnlOrigin.Visible = True
Case Else
'do nothing
End Select
End Sub
我的问题是在表单加载时,我希望选择一个默认节点,或者像用户单击默认节点一样实际执行操作
Private Sub frm_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
'initialize the treeview
With tvw
.Nodes.Add("gen", "General", "gen", "gen")
.Nodes.Add("ogn", "Origin", "ogn", "ogn")
.SelectedNode = .Nodes.Item("gen")
End With
End Sub
.SelectedNode不执行此操作,我正在尝试在.NET中如何执行此操作。在VB6中,我曾经使用tvw_节点单击tvw.Nodes(“gen”)。您可以直接调用tvw_节点鼠标单击(),而无需尝试触发事件。但这有点烦人,因为有争论。只需重构代码并分解出要重复使用的部分:
Private Sub NodeSelect(pNode As TreeNode)
Dim nodeName As String = pNode.Name ''get the name of the node
Select Case nodeName.ToLower
Case "gen"
pnlGeneral.Visible = True
pnlOrigin.Visible = False
Case "ogn"
pnlGeneral.Visible = False
pnlOrigin.Visible = True
Case Else
''do nothing
End Select
End Sub
Private Sub tvw_NodeMouseClick(sender As Object, e As System.Windows.Forms.TreeNodeMouseClickEventArgs) Handles tvw.NodeMouseClick
NodeSelect(e.Node)
End Sub
现在它是微不足道的:
Private Sub frm_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
With tvw
Dim node = .Nodes.Add("gen", "General", "gen", "gen")
.Nodes.Add("ogn", "Origin", "ogn", "ogn")
.SelectedNode = node
NodeSelect(node)
End With
End Sub
啊,啊,太简单了,这就是“为什么我没想到这个”之一。我想我是想得太多了。让我来试一试。效果很好!。谢谢我添加的唯一内容是在.SelectedNode之后放置一个.Select(),否则默认节点不会突出显示。