Hallo zusammen,
ich habe ein treeview
node 0
_______node 1 : 1
_______node 1 : 2
_______node 1 : 3
also zwei Ebene. Ich möchte die Nodes 1 umbenennen und zwar genau wie bei Windows, wenn ich zwei mal auf dem Node mit dem linke Maustaste
drücke oder Rechtsklick und Umbenennen wähle.
ich habe folgenen Code:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70:
|
private void renameToolStripMenuItem_Click(object sender, EventArgs e) { RenameDirectory(); }
private void treeView1_DoubleClick(object sender, EventArgs e) { RenameDirectory(); } private void RenameDirectory() { if (treeView1.SelectedNode != null) { string sourcePath = ToolboxSubPath + "\\" + treeView1.SelectedNode.Text; treeView1.SelectedNode.Text = "@"; treeView1.LabelEdit = true; if (!treeView1.SelectedNode.IsEditing) { treeView1.SelectedNode.BeginEdit(); } Directory.Move(sourcePath, ToolboxSubPath + "\\" + treeView1.SelectedNode.Text); treeView1.LabelEdit = false; } private void treeView1_AfterLabelEdit(object sender, System.Windows.Forms.NodeLabelEditEventArgs e) { if (e.Label != null) { if (e.Label.Length > 0) { if (e.Label.IndexOfAny(new char[] { '@', '.', ',', '!', '?', '=', '$', '%'}) == -1) { e.Node.EndEdit(false); } else { e.CancelEdit = true; MessageBox.Show("Invalid tree node label.\n" + "The invalid characters are: '@', '.', ',', '!', '?', '=', '$', '%'", "Node Label Edit"); e.Node.BeginEdit(); } } else { e.CancelEdit = true; MessageBox.Show("Invalid tree node label.\nThe label cannot be blank", "Node Label Edit"); e.Node.BeginEdit(); } } }
} |
erstens:
Wie man sieht die Methode
C#-Quelltext
1:
| private void treeView1_AfterLabelEdit |
prüft für die Sonderzeichen. Das Problem liegt daran, dass die erste
if Anweisung if(e.Label != null) ist immer null und ich kann nicht überprüfen, ob in dem neuen Namen ein Sonderzeichen existiert. Hat jemand eine Idee, wie könnte ich es machen?
zweitens:
Ich möchte den Node per Tastatur umbenennen, nicht wie oben:
treeView1.SelectedNode.Text = "@";
wie macht man das?
Vielen Dank!
Schöne Grüße
doubleII