重命名节点时的Treeview问题

时间:2010-08-30 10:01:48

标签: c# winforms treeview

大家好我已经写了一个代码来重命名树视图的节点。在编辑时,如果我删除所有文本并点击输入它将被重命名,但如果用户输入一些带有extensioin .txt的文本,那么我只想重命名该名称。

我调试了我的解决方案,删除了所有文本“”,这样就不会检查条件如果将其保留为我指定的错误信息该怎么办

这是我的代码

// Contextmenu

   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;


        }
    }

2 个答案:

答案 0 :(得分:1)

从我可以告诉您的问题,您正在努力使用户只能将树节点的文本更改为以“.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; 
    }
}

答案 1 :(得分:0)

你应该通过细节来摆脱这个问题  http://www.codeproject.com/KB/tree/CustomizedLabelEdit.aspx