在treeview c#win中更改树节点的文本。形成 [英] Change Text of a Tree Node in treeview c# win. form
本文介绍了在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屋!
查看全文