Автоматическая сортировка C# winforms TreeView приводит к сбою моего приложенияC#

Место общения программистов C#
Anonymous
Автоматическая сортировка C# winforms TreeView приводит к сбою моего приложения

Сообщение Anonymous »

Я новичок в C# и создал приложение winform с TreeView. Я включил сортировку с помощью

Код: Выделить всё

        private void Form1_Load(object sender, EventArgs e)
{
TreeView1.Sorted = true;   // enabled auto sort here
}
поэтому теперь, когда я создаю новые узлы, TreeView автоматически сортируется.
Моя проблема возникает, когда я разрешаю пользователю переименовывать узел из созданного мной элемента контекстного меню. TreeView не активируется автоматически. Поэтому в обработчике моего обработчика событий контекстного меню я добавил TreeViewDecks.Sort();

Код: Выделить всё

        private void renameToolStripMenuItem_Click(object sender, EventArgs e)
{
if (TreeView1.SelectedNode != null)
{
TreeView1.SelectedNode.BeginEdit();

TreeView1.Sort();    // tried to call sort here stopped the edit
}
}
но это мешает мне редактировать метку, а просто сортирует дерево. Поэтому я удалил это и попытался изменить обработчик событий TreeView1_AfterLabelEdit(...), добавив TreeViewDecks.Sort(); до конца функции

Код: Выделить всё

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

TreeView1.Sorted = true;    // tried to call sort here crashed app
}
но это приводит к сбою моего приложения. Итак, мой вопрос: после того, как я переименую узел TreeView из обработчика событий контекстного меню, где мне следует вызвать TreeView1.Sort(); откуда?
Спасибо, что заглянули

Вернуться в «C#»