TreeView.AfterLabelEdit イベント
ツリー ノードのラベル テキストが編集された後に発生します。
名前空間: System.Windows.Forms
アセンブリ: System.Windows.Forms (system.windows.forms.dll 内)
構文
'宣言
Public Event AfterLabelEdit As NodeLabelEditEventHandler
'使用
Dim instance As TreeView
Dim handler As NodeLabelEditEventHandler
AddHandler instance.AfterLabelEdit, handler
public event NodeLabelEditEventHandler AfterLabelEdit
public:
event NodeLabelEditEventHandler^ AfterLabelEdit {
void add (NodeLabelEditEventHandler^ value);
void remove (NodeLabelEditEventHandler^ value);
}
/** @event */
public void add_AfterLabelEdit (NodeLabelEditEventHandler value)
/** @event */
public void remove_AfterLabelEdit (NodeLabelEditEventHandler value)
JScript では、イベントは使用できますが、新規に宣言することはできません。
解説
イベント処理の詳細については、「イベントの利用」を参照してください。
使用例
ContextMenu を使用して、ユーザーがルート以外のツリー ノードを編集できるようにするコード例を次に示します。ユーザーがマウスを右クリックすると、ポインタ位置にある TreeNode が判断され、mySelectedNode
という名前の変数に格納されます。ルート以外のツリー ノードが選択された場合、そのツリー ノードはユーザーが編集できる状態になります。ユーザーがツリー ノードのラベル編集を停止すると、新しいラベル テキストが評価され、保存されます。この例では、いくつかの文字がラベル テキストとして無効であると判断されます。ラベル文字列に無効な文字が 1 文字でも含まれている場合、または文字列が空の場合は、ユーザーにエラーが通知され、ラベル テキストは前の状態に戻されます。
' 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
/* 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;
}
}
/* 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 != nullptr && mySelectedNode->Parent != nullptr )
{
treeView1->SelectedNode = mySelectedNode;
treeView1->LabelEdit = true;
if ( !mySelectedNode->IsEditing )
{
mySelectedNode->BeginEdit();
}
}
else
{
MessageBox::Show( String::Concat( "No tree node selected or selected node is a root node.\n",
"Editing of root nodes is not allowed." ), "Invalid selection" );
}
}
void treeView1_AfterLabelEdit( Object^ /*sender*/,
System::Windows::Forms::NodeLabelEditEventArgs^ e )
{
if ( e->Label != nullptr )
{
if ( e->Label->Length > 0 )
{
array<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( String::Concat( "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;
}
}
/* 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.get_X(), e.get_Y());
} //treeView1_MouseDown
private void menuItem1_Click(Object sender, System.EventArgs e)
{
if (mySelectedNode != null && mySelectedNode.get_Parent() != null) {
treeView1.set_SelectedNode(mySelectedNode);
treeView1.set_LabelEdit(true);
if (!(mySelectedNode.get_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");
}
} //menuItem1_Click
private void treeView1_AfterLabelEdit(Object sender,
System.Windows.Forms.NodeLabelEditEventArgs e)
{
if (e.get_Label()!= null) {
if (e.get_Label().length() > 0) {
if (e.get_Label().IndexOfAny((new char[]{ '@', '.', ',', '!' }))
== -1) {
// Stop editing without canceling the label change.
e.get_Node().EndEdit(false);
}
else {
/* Cancel the label edit action, inform the user, and
place the node in edit mode again.
*/
e.set_CancelEdit(true);
MessageBox.Show("Invalid tree node label.\n"
+ "The invalid characters are: "
+ "'@','.', ',', '!'", "Node Label Edit");
e.get_Node().BeginEdit();
}
}
else {
/* Cancel the label edit action, inform the user, and
place the node in edit mode again.
*/
e.set_CancelEdit(true);
MessageBox.Show("Invalid tree node label.\n"
+ "The label cannot be blank", "Node Label Edit");
e.get_Node().BeginEdit();
}
this.treeView1.set_LabelEdit(false);
}
} //treeView1_AfterLabelEdit
プラットフォーム
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。
バージョン情報
.NET Framework
サポート対象 : 2.0、1.1、1.0
参照
関連項目
TreeView クラス
TreeView メンバ
System.Windows.Forms 名前空間
OnAfterLabelEdit
BeforeLabelEdit
OnBeforeLabelEdit