TreeView.AfterLabelEdit Event
Occurs after the tree node label text is edited.
[Visual Basic] Public Event AfterLabelEdit As NodeLabelEditEventHandler [C#] public event NodeLabelEditEventHandler AfterLabelEdit; [C++] public: __event NodeLabelEditEventHandler* AfterLabelEdit;
[JScript] In JScript, you can handle the events defined by a class, but you cannot define your own.
Event Data
The event handler receives an argument of type NodeLabelEditEventArgs containing data related to this event. The following NodeLabelEditEventArgs properties provide information specific to this event.
| Property | Description |
|---|---|
| CancelEdit | Gets or sets a value indicating whether the edit has been canceled. |
| Label | Gets the new text to associate with the tree node. |
| Node | Gets the tree node containing the text to edit. |
Remarks
For more information about handling events, see Consuming Events.
Example
[Visual Basic, C#, C++] The following example allows the user to edit nonroot tree nodes by using a ContextMenu. When the user right clicks the mouse, the TreeNode at that position is determined and stored in a variable named mySelectedNode. If a nonroot tree node was selected, it is put into an editable state, allowing the user to edit the node label. After the user stops editing the tree node label, the new label text is evaluated and saved. For this example, several characters are considered not valid in the label text. If one of the invalid characters is in the label string, or the string is empty, the user is notified of the error and the label is returned to its previous text.
[Visual Basic] ' Get the tree node under the mouse pointer and ' save it in the mySelectedNode variable. Private Sub treeView1_MouseDown(sender As Object, _ e As System.Windows.Forms.MouseEventArgs) mySelectedNode = treeView1.GetNodeAt(e.X, e.Y) End Sub Private Sub menuItem1_Click(sender As Object, e As System.EventArgs) If Not (mySelectedNode Is Nothing) And _ Not (mySelectedNode.Parent Is Nothing) Then treeView1.SelectedNode = mySelectedNode treeView1.LabelEdit = True If Not mySelectedNode.IsEditing Then mySelectedNode.BeginEdit() End If Else MessageBox.Show("No tree node selected or selected node is a root node." & _ Microsoft.VisualBasic.ControlChars.Cr & _ "Editing of root nodes is not allowed.", "Invalid selection") End If End Sub Private Sub treeView1_AfterLabelEdit(sender As Object, _ e As System.Windows.Forms.NodeLabelEditEventArgs) If Not (e.Label Is Nothing) Then If e.Label.Length > 0 Then If e.Label.IndexOfAny(New Char() {"@"c, "."c, ","c, "!"c}) = -1 Then ' Stop editing without canceling the label change. e.Node.EndEdit(False) Else ' Cancel the label edit action, inform the user, and ' place the node in edit mode again. e.CancelEdit = True MessageBox.Show("Invalid tree node label." & _ Microsoft.VisualBasic.ControlChars.Cr & _ "The invalid characters are: '@','.', ',', '!'", _ "Node Label Edit") e.Node.BeginEdit() End If Else ' Cancel the label edit action, inform the user, and ' place the node in edit mode again. e.CancelEdit = True MessageBox.Show("Invalid tree node label." & _ Microsoft.VisualBasic.ControlChars.Cr & _ "The label cannot be blank", "Node Label Edit") e.Node.BeginEdit() End If Me.treeView1.LabelEdit = False End If End Sub [C#] /* Get the tree node under the mouse pointer and save it in the mySelectedNode variable. */ private void treeView1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) { mySelectedNode = treeView1.GetNodeAt(e.X, e.Y); } private void menuItem1_Click(object sender, System.EventArgs e) { if (mySelectedNode != null && mySelectedNode.Parent != null) { treeView1.SelectedNode = mySelectedNode; treeView1.LabelEdit = true; if(!mySelectedNode.IsEditing) { mySelectedNode.BeginEdit(); } } else { MessageBox.Show("No tree node selected or selected node is a root node.\n" + "Editing of root nodes is not allowed.", "Invalid selection"); } } 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) { // Stop editing without canceling the label change. e.Node.EndEdit(false); } else { /* Cancel the label edit action, inform the user, and place the node in edit mode again. */ e.CancelEdit = true; MessageBox.Show("Invalid tree node label.\n" + "The invalid characters are: '@','.', ',', '!'", "Node Label Edit"); e.Node.BeginEdit(); } } else { /* Cancel the label edit action, inform the user, and place the node in edit mode again. */ e.CancelEdit = true; MessageBox.Show("Invalid tree node label.\nThe label cannot be blank", "Node Label Edit"); e.Node.BeginEdit(); } this.treeView1.LabelEdit = false; } } [C++] /* Get the tree node under the mouse pointer and save it in the mySelectedNode variable. */ private: void treeView1_MouseDown(Object* /*sender*/, System::Windows::Forms::MouseEventArgs* e) { mySelectedNode = treeView1->GetNodeAt(e->X, e->Y); } void menuItem1_Click(Object* /*sender*/, System::EventArgs* /*e*/) { if (mySelectedNode != 0 && mySelectedNode->Parent != 0) { treeView1->SelectedNode = mySelectedNode; treeView1->LabelEdit = true; if(!mySelectedNode->IsEditing) { mySelectedNode->BeginEdit(); } } else { MessageBox::Show(S"No tree node selected or selected node is a root node.\nEditing of root nodes is not allowed.", S"Invalid selection"); } } void treeView1_AfterLabelEdit(Object* /*sender*/, System::Windows::Forms::NodeLabelEditEventArgs* e) { if (e->Label != 0) { if(e->Label->Length > 0) { Char temp0 [] = {'@', '.', ',', '!'}; if (e->Label->IndexOfAny(temp0) == -1) { // Stop editing without canceling the label change. e->Node->EndEdit(false); } else { /* Cancel the label edit action, inform the user, and place the node in edit mode again. */ e->CancelEdit = true; MessageBox::Show(S"Invalid tree node label.\nThe invalid characters are: '@','.', ',', '!'", S"Node Label Edit"); e->Node->BeginEdit(); } } else { /* Cancel the label edit action, inform the user, and place the node in edit mode again. */ e->CancelEdit = true; MessageBox::Show(S"Invalid tree node label.\nThe label cannot be blank", S"Node Label Edit"); e->Node->BeginEdit(); } this->treeView1->LabelEdit = false; } }
[JScript] No example is available for JScript. To view a Visual Basic, C#, or C++ example, click the Language Filter button
in the upper-left corner of the page.
Requirements
Platforms: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family
See Also
TreeView Class | TreeView Members | System.Windows.Forms Namespace | OnAfterLabelEdit | BeforeLabelEdit | OnBeforeLabelEdit