Treenode readonly
-
Grüezi:)
Ich habe mir einen Three erstellt. Bei dem sollte der User nur den 1.Level (=1 Eintrag) verändern können. Ich habe den Tree jetzt auf readonly gesetzt, wie kann ich nun ein node auf writeable setzten??
-
In Abhängigkeit des gewählen Nodes
LabelEdit = true;
oder
LabelEdit = false;
Also im Code prüfen welcher Node ausgewählt(Selected) ist.
-
hm, ich scheine ein Knopf in der Leitung zu haben...
treeView1.SelectedNode.LabelEdit = false;
Bekomme ich folgende Fehlermeldung:
System.Windows.Forms.TreeNode' does not contain definition for 'LabelEdit'
-
Wenn ich das richtig verstanden habe, soll der Nutzer nur Knoten erster Ebene editieren können. Dann musst du in einer if abfrage entscheiden ob der Selected Node in der ersten Ebene liegt und wenn ja, dann "treeView1.LabelEdit = true;" setzen, ansonsten "treeView1.LabelEdit = false;".
Ich hab es mal in einer meiner Anwendungen getestet. So sollte es funktionieren:
for (int i = 0; i < treeView1.Nodes.Count; i++) { if (treeView1.SelectedNode == treeView1.Nodes[i]) { treeView1.LabelEdit = true; return; } else { treeView1.LabelEdit = false; } }
Das ganze im "treeView1_AfterSelect(...)"
-
Super danke! Habe fast das gleiche bekommen. Hab deinen Beitrag vor dem editieren gesehen und dann hat sich der Knopf gelöst
-
Es gibt auch noch eine elegantere Lösung. Du setzt allgemein LableEdit auf true und kannst dann im BeforeLabelEdit testen ob bei dem Label editieren erlaubt ist und wenn nicht in den Event-Arguments CancelEdit auf 'true' setzten. Das Editieren findet dann nicht statt.
private void treeView1_BeforeLabelEdit(object sender, NodeLabelEditEventArgs e) { if(e.Node != treeView1.Nodes[0]) e.CancelEdit = true; }