TreeNode.BeginEdit 메서드
트리 노드 레이블의 편집을 초기화합니다.
네임스페이스: System.Windows.Forms
어셈블리: System.Windows.Forms(system.windows.forms.dll)
구문
‘선언
Public Sub BeginEdit
‘사용 방법
Dim instance As TreeNode
instance.BeginEdit
public void BeginEdit ()
public:
void BeginEdit ()
public void BeginEdit ()
public function BeginEdit ()
예외
예외 형식 | 조건 |
---|---|
TreeView.LabelEdit가 false로 설정된 경우 |
설명
이 메서드는 일반적으로 MenuItem 또는 ContextMenu의 Click 이벤트에서 호출합니다.
참고
이 메서드는 TreeView의 LabelEdit 속성이 true로 설정되어 있는 경우에만 수행됩니다. LabelEdit가 false로 설정되어 있으면 예외가 throw되고 트리 노드는 편집할 수 없는 상태가 됩니다.
예제
다음 코드 예제에서는 ContextMenu를 사용하여 사용자가 루트가 아닌 트리 노드를 편집할 수 있도록 합니다. 사용자가 마우스 오른쪽 단추로 클릭하면 해당 위치에 있는 TreeNode가 확인되어 mySelectedNode
로 명명된 변수에 저장됩니다. 루트가 아닌 트리 노드를 선택하면 편집 가능한 상태가 되어 사용자가 노드 레이블을 편집할 수 있습니다. 사용자가 트리 노드 레이블의 편집을 중지하면 새 레이블 텍스트가 지정되어 저장됩니다. 이 예제에서는 레이블 텍스트의 문자가 몇 개 잘못되었습니다. 레이블 문자열에 잘못된 문자가 있거나 문자열이 비어 있으면 사용자에게 오류가 통지되고 레이블은 이전 텍스트로 되돌아갑니다.
' 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에서 지원
참고 항목
참조
TreeNode 클래스
TreeNode 멤버
System.Windows.Forms 네임스페이스
EndEdit
IsEditing