Hallo,
ich habe ein Treeview ( tvMedia). Dort soll dem Anwender die Möglichkeit gegeben werden, selbst Knoten zu erstellen. dies mache ich wie folgt.
Soweit klappt alles, bis auf.
Der neue Knoten wird angelegt und als vordefinierter Text steht "Neue Kategorie" da. Klickt man nun auf einen anderen Eintrag, ploppt 2 mal die Messagebox mit der Meldung auf die Daten richtig einzugeben. Genauso ploppt die Messagbox auch auf, wenn ich direkt Enter betätige, obwohl dort der vordefinierte Text steht. Auch ist e.Label immer Nothing solange ich nichts eingebe.
Was ich halt erreichen möchte ist
1: Das wenn auf einen anderen Knoten geklickt wird, nichts passiert
2: Wenn direkt Enter gedrückt wird, der vordefinierte Text genommen wird
3: Wenn die Zeichenlänge =0 ist oder nur aus Leerzeichen besteht, dann einmal die Messagebox angezeigt wird.
Weiss jemand wo mein Fehler hier liegt und wie ich das ändern müsste?
LG ALex
CodeTags gesetzt ~VaporiZed
ich habe ein Treeview ( tvMedia). Dort soll dem Anwender die Möglichkeit gegeben werden, selbst Knoten zu erstellen. dies mache ich wie folgt.
VB.NET-Quellcode
- Private Sub NewKnoten(Sender as Object,e as EventArgs) Handles NewKnoten.Click
- Modus = MyModus.Neu ' Die Variable brauch ich an anderen Stellen
- Dim NewNode As TreeNode = New TreeNode("Neue Kategorie") With {.Name = "Neue Kategorie", .Tag = Nothing, .ContextMenuStrip = Me.ContextMenuStrip1}
- tvMedia.TopNode.Nodes.Add(NewNode)
- tvMedia.LabelEdit = True
- If Not NewNode.IsEditing Then NewNode.BeginEdit()
- End Sub
- Private Sub tvMedia_BeforeSelect(sender As Object, e As TreeViewCancelEventArgs) Handles tvMedia.BeforeSelect
- e.Cancel = Not (Modus = MyModus.Show Or Modus = MyModus.Laden)
- End Sub
- Private Sub tvMedia_AfterLabelEdit(sender As Object, e As NodeLabelEditEventArgs) Handles tvMedia.AfterLabelEdit
- 'Noch prüfen ob Eintrag bereits in der Liste vorhanden ist
- If Trim(e.Label).Length = 0 Then
- Dim Bezeichner As String = ""
- Select Case e.Node.Level
- Case 1
- Bezeichner = " die Kategorie"
- Case 2
- Bezeichner = "die Gruppe"
- Case 3
- Bezeichner = "den Benutzer"
- End Select
- MessageBox.Show("Der Eintrag für " & Bezeichner & " darf nicht aus Leerzeichen bestehen oder eine Länge von 0 Zeichen haben! Bitte geben Sie " & Bezeichner & " richtig ein.", "Ungültige Eingabe", MessageBoxButtons.OK, MessageBoxIcon.Information)
- e.CancelEdit = True
- e.Node.BeginEdit()
- Else
- DirectCast(sender, TreeView).LabelEdit = False ' Es kann nix mehr bearbeitet werden
- e.Node.Name = e.Label ' Name wird zugewiesen an die Name Eigenschaft
- e.Node.Text = e.Label ' Text wird zugewiesen an die Text Eigenschaft
- e.Node.EndEdit(False) ' Node wird gespeichert im treeview
- DirectCast(sender, TreeView).SelectedNode = e.Node
- Modus = MyModus.Show ' Modus wird auf anzeigen gesetzt
- End If
- End Sub
Soweit klappt alles, bis auf.
Der neue Knoten wird angelegt und als vordefinierter Text steht "Neue Kategorie" da. Klickt man nun auf einen anderen Eintrag, ploppt 2 mal die Messagebox mit der Meldung auf die Daten richtig einzugeben. Genauso ploppt die Messagbox auch auf, wenn ich direkt Enter betätige, obwohl dort der vordefinierte Text steht. Auch ist e.Label immer Nothing solange ich nichts eingebe.
Was ich halt erreichen möchte ist
1: Das wenn auf einen anderen Knoten geklickt wird, nichts passiert
2: Wenn direkt Enter gedrückt wird, der vordefinierte Text genommen wird
3: Wenn die Zeichenlänge =0 ist oder nur aus Leerzeichen besteht, dann einmal die Messagebox angezeigt wird.
Weiss jemand wo mein Fehler hier liegt und wie ich das ändern müsste?
LG ALex
CodeTags gesetzt ~VaporiZed
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()