2013-10-11 33 views
0

VB2010我有一個非常好的例程在TreeView的NodeMouseClick隱藏/顯示在窗體中的面板取決於用戶點擊什麼節點。簡化版本:NET模擬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 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_NodeClick tvw.Nodes(「gen」)。

回答

1

你可以直接調用tvw_NodeMouseClick(),試圖讓事件觸發沒有意義。但由於爭論,這有點煩人。簡單地重構代碼和打出來的部分要重新使用:

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 
+0

AHHHHH ......如此簡單的那些「爲什麼我沒有一個想到那個「。我想我是在過度思考它。讓我給一個鏡頭。 – sinDizzy

+0

工程太棒了!謝謝。我添加的唯一東西是.SelectedNode後,我把一個.Select(),否則默認節點不突出顯示。 – sinDizzy