次の方法で共有


NodeLabelEditEventArgs クラス

BeforeLabelEdit イベントと AfterLabelEdit イベントのデータを提供します。

この型のすべてのメンバの一覧については、NodeLabelEditEventArgs メンバ を参照してください。

System.Object
   System.EventArgs
      System.Windows.Forms.NodeLabelEditEventArgs

Public Class NodeLabelEditEventArgs
   Inherits EventArgs
[C#]
public class NodeLabelEditEventArgs : EventArgs
[C++]
public __gc class NodeLabelEditEventArgs : public EventArgs
[JScript]
public class NodeLabelEditEventArgs extends EventArgs

スレッドセーフ

この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。

解説

AfterLabelEdit イベントは、ユーザーがツリー ノードのテキストを編集し終わったときに発生します。 BeforeLabelEdit イベントは、ユーザーがツリー ノードのテキストを編集し始めたときに発生します。 NodeLabelEditEventArgs オブジェクトは、ツリー ノードに関連付ける新しいテキスト、編集するラベルを保持しているツリー ノード、および編集操作がキャンセルされたかどうかを指定します。

イベント処理の詳細については、「 イベントの利用 」を参照してください。

使用例

[Visual Basic, C#, C++] 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 

[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] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

名前空間: System.Windows.Forms

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

アセンブリ: System.Windows.Forms (System.Windows.Forms.dll 内)

参照

NodeLabelEditEventArgs メンバ | System.Windows.Forms 名前空間 | NodeLabelEditEventHandler | BeforeLabelEdit | AfterLabelEdit