C# 重命名节点时出现Treeview问题

C# 重命名节点时出现Treeview问题,c#,winforms,treeview,C#,Winforms,Treeview,嗨,我已经写了一个代码来重命名树视图的节点。在编辑时,如果我删除所有文本并按enter键,它将被重命名,但如果用户输入一些带有extensionin.txt的文本,则只有我想重命名该名称 我调试了我的解决方案,删除了所有给出“”的文本,这样它就不会检查条件,如果按照我指定的方式留下错误消息,该怎么办 这是我的密码 //上下文菜单 private void renameToolStripMenuItem_Click(object sender, EventArgs e) {

嗨,我已经写了一个代码来重命名树视图的节点。在编辑时,如果我删除所有文本并按enter键,它将被重命名,但如果用户输入一些带有extensionin.txt的文本,则只有我想重命名该名称

我调试了我的解决方案,删除了所有给出“”的文本,这样它就不会检查条件,如果按照我指定的方式留下错误消息,该怎么办

这是我的密码

//上下文菜单

   private void renameToolStripMenuItem_Click(object sender, EventArgs e)
    {
        string strOld = treeViewACH.SelectedNode.ToString();
        treeViewACH.SelectedNode.BeginEdit();

    }
//在选定节点上显示关联菜单的步骤

    private void treeViewACH_MouseDown(object sender, MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Right)
        {


            if (treeViewACH.SelectedNode.Parent != null)
            {
                string strSwitch = treeViewACH.SelectedNode.Parent.Text;

                switch (strSwitch)
                {
                    case "FileHeader":
                        //string strOld = treeViewACH.SelectedNode.Text.ToString();
                        contextMenuStrip1.Show(treeViewACH, e.Location);
                        break;
                }
            }
            else
            {
                // MessageBox.Show("Left clicked");
            }
        }
    }
//改名

    private void treeViewACH_AfterLabelEdit(object sender, NodeLabelEditEventArgs e)
    {
        if (e.Label.IndexOfAny(new char[]{'\\', 
        '/', ':', '*', '?', '"', '<', '>', '|'}) != -1)
        {
            MessageBox.Show("Invalid tree node label.\n" +
              "The tree node label must not contain " +
                  "following characters:\n \\ / : * ? \" < > |",
              "Label Edit Error", MessageBoxButtons.OK,
              MessageBoxIcon.Error);
            e.CancelEdit = true;
            return;


        }
    }
private void treeViewACH_AfterLabelEdit(对象发送方,NodeLabelEditEventArgs e)
{
如果(e.Label.IndexOfAny)(新字符[]{'\\',
'/', ':', '*', '?', '"', '', '|'}) != -1)
{
MessageBox.Show(“无效的树节点标签。\n”+
“树节点标签不能包含”+
“以下字符:\n\\/:*?\”<>|“,
“标签编辑错误”,MessageBoxButtons.OK,
MessageBoxIcon.Error);
e、 CancelEdit=true;
返回;
}
}

您应该仔细检查细节以解决此问题

从我对您的问题的了解可以看出,您正在尝试使用户只能将树节点的文本更改为以“.txt”结尾的字符串值。假设您正试图这样做,您的AfterLabelEdit逻辑可以更改为:

private void treeViewACH_AfterLabelEdit(object sender, NodeLabelEditEventArgs e)
{
   if (!e.Label.EndsWith(".txt"))
   {
      MessageBox.Show("Invalid tree node label.\n" +
         "The tree node label must end with " +
         "the extension: .txt",
         "Label Edit Error", MessageBoxButtons.OK,
         MessageBoxIcon.Error);
      e.CancelEdit = true;
      return; 
    }
}