Treeview - Event auf Knoten Klicken, aber nicht die Erweiterung in Visual Basic (VS 2012 V11)
Ich versuche zu machen, eine Hilfe-Datei in Visual Basic. Ich habe beschlossen, zu gehen den Weg der Replikation der Stil der alten Hilfe-Dateien mit einem TreeView
- panel, auf der linken Seite, und ein RichTextbox
auf der rechten Seite des Formulars. (Dieses set-up sieht wie die Hilfe-Datei in PowerShell fast genau.
Ich versuche es so zu machen, dass, wenn ein TreeView
Node
ist Single Clicked
die RichTextbox
Text
wird sich ändern, um den entsprechenden text. Hier ist mein code:
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
Das problem ist, dass der text geändert wird, wenn Sie einfach auf die Schaltfläche Plus
oder Minus
befindet sich neben dem TreeView
Node
. Aber, ich möchte zu emulieren, die PowerShell helfen Verhalten, wo Sie die Plus
oder Minus
erweitern oder reduzieren Sie die Knoten, ändert aber nicht die RichTextbox
Text
. Nur beim Klick auf den Nodes
name (Text
) an sich sollte die RichTextbox
Text
ändern. Ich habe versucht, verschiedene Methoden, aber keiner scheint zu funktionieren. Was kann ich tun?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnte dies zu spät sein, aber ich hatte gerade dasselbe problem.
Ich benutzte die AfterSelect-Ereignis.
Es ist logisch, dass NodeClick-Ereignis wird ausgelöst, wenn man versucht, erweitern Sie den Knoten da sind wir einen Klick auf den Knoten, durch den ausbau es.
Wenn man interessiert ist, sich nur auf die Auswahl erfolgt durch die Maus, dann ist es notwendig zu überprüfen, ob e.Action = TreeViewAction.ByMouse.
Durch die Verwendung von "wenn TreeViewAction.ByMouse dann ...", der code unter dem if-Anweisung wird excuted wenn man drückt die Pfeil-Tasten oder der Maus. Also die erste If-Anweisung ist sehr wichtig, wenn nur die Maus, die Auswahl ist erwischt zu werden.
Verwenden Sie die AfterSelect-Ereignis statt.
If Statements
das Verhalten zu ändern, aber es gibt nur ein halbes Update (mitTreeViewContents.AfterSelect
undIf e.Node.IsExapanded And Also e.Node.Text.Equals("Program Help")
Dies beendet den text ändern, wenn ein Knoten minus Feld geklickt wird, sondern es auch zwingt den Benutzer zu haben, um einen Knoten zu erweitern, klicken Sie auf einen Kind-Knoten, dann wird der übergeordnete Knoten, um den text von einem übergeordneten Knoten auf, nach der Erweiterung.