2013-05-21 30 views
0

我想在Visual Basic中創建一個幫助文件。我決定採用複製舊式幫助文件的路線,在屏幕右側的TreeView面板的左側和RichTextbox的右側。 (這種設置看起來像PowerShell中幾乎一模一樣的幫助文件。Treeview - 事件節點點擊但不擴展在Visual Basic中(VS 2012 V11)

我試圖讓這個當TreeViewNodeSingle ClickedRichTextboxText會更改爲相應的文字。這裏是我的代碼:

Private Sub treeView_NodeMouseClick(ByVal sender As Object, ByVal e As TreeNodeMouseClickEventArgs) Handles TreeViewContents.NodeMouseClick 
     If e.Node.Text.Equals("Program Help") Then 
      RTBHelp.Text = Environment.NewLine & "Help text here." 
     End If 

     If e.Node.Text.Equals("Program Getting Started") Then 
      RTBHelp.Text = Environment.NewLine & "Getting Started text here" 
     End If 

    End Sub 

的問題是,只需點擊旁邊的TreeViewPlusMinus當文本將改變Node但是,我想效仿的PowerShell幫助行爲,其中單擊PlusMinus可擴展或摺疊節點,但不會更改RichTextboxText。只有當點擊Nodes名稱(Text)本身應該RichTextboxText更改。我嘗試了幾種方法,但似乎沒有任何工作。我該怎麼辦?

回答

0

改爲使用AfterSelect事件。

+0

代碼處理該事件幾乎與點擊一樣。我可以添加一些'如果語句'來修改行爲,但它只給出了一半修復(使用'TreeViewContents.AfterSelect'和'如果e.Node.IsExapanded並且e.Node.Text.Equals(「程序幫助」)) '當單擊節點減號框時,這會停止更改文本,但它也會強制用戶必須展開節點,單擊子節點,然後單擊父節點以在展開後更改父節點的文本。 – user2348797

1

這可能太晚了,但我只是有同樣的問題。 我使用了AfterSelect事件。 由於我們通過展開節點來單擊節點,因此在嘗試展開節點時會觸發NodeClick事件。 如果有人對鼠標所做的選擇感興趣,那麼有必要檢查e.Action = TreeViewAction.ByMouse。

Private Sub treeView_AfterSelect(ByVal sender As Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles treeView.AfterSelect 
    If e.Action = TreeViewAction.ByMouse Then 
     If e.Node.Text.Equals("Program Help") Then 
      RTBHelp.Text = Environment.NewLine & "Help text here." 
     End If 

     If e.Node.Text.Equals("Program Getting Started") Then 
      RTBHelp.Text = Environment.NewLine & "Getting Started text here" 
     End If 
    End If 

End Sub 

通過使用「如果TreeViewAction.ByMouse那麼......」,if語句下的代碼將被如果按下箭頭鍵或鼠標excuted。所以如果只有鼠標選擇被捕獲,第一個If語句非常重要。