Проблема Treeview при переименовании узла - PullRequest
0 голосов
/ 30 августа 2010

Привет всем, я написал код для переименования узла дерева.При редактировании, если я удаляю весь текст и нажимаю клавишу ввода, он переименовывается, но если пользователь вводит какой-то текст с расширением .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 ]

1 голос
/ 30 августа 2010

Из того, что я могу рассказать о вашем вопросе, вы пытаетесь сделать так, чтобы пользователь мог изменить только текст узла дерева на строковое значение, заканчивающееся на ".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; 
    }
}
0 голосов
/ 30 августа 2010

Вы должны пройти через детали, чтобы избавиться от этой проблемы http://www.codeproject.com/KB/tree/CustomizedLabelEdit.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...