在treeview c#win中更改树节点的文本。形成 [英] Change Text of a Tree Node in treeview c# win. form

查看:352
本文介绍了在treeview c#win中更改树节点的文本。形成的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何在树节点中限制某人输入文本。我想在 treeView1_AfterLabelEdit 之后检查是否已保存插入的文本。如果是,则插入的文本应更改为新建。怎么做?

How to restrict somebody from entering text in a tree node. I want to check after "treeView1_AfterLabelEdit" that if the text inserted is already saved. If yes, then the inserted text should be changed to "New". How to do so?

推荐答案

/* 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();
     }
   }
}



TreeView.LabelEdit Property [ ^ ]



-KR


TreeView.LabelEdit Property[^]

-KR


此外,必须在标签更改后更新节点:



//不停止编辑取消标签更改。

e.Node.EndEdit(false);



//现在,按文本更新节点(这也会更改) node.fullpath)

e.Node.Text = e.Label;





参见MS网站,也是如此。



TreeNode.EndEdit(Boolean)Method(System.Windows.Forms)| Microsoft Docs [ ^ ]
Also, the node must be updated after Label change as:

// Stop editing without canceling the label change.
e.Node.EndEdit(false);

//now, update node by Text (this also changes node.fullpath)
e.Node.Text = e.Label;


See MS site, too, below.

TreeNode.EndEdit(Boolean) Method (System.Windows.Forms) | Microsoft Docs[^]


这篇关于在treeview c#win中更改树节点的文本。形成的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆