Вопрос о редактировании метки TreeView

У меня есть древовидное представление с такими узлами: «Foo (1234)», и я хочу разрешить пользователю переименовывать узлы, но только часть Foo без (1234). Сначала я попытался изменить текст узла в BeforeLabelEdit следующим образом:

private void treeView1_BeforeLabelEdit(object sender, NodeLabelEditEventArgs e)
{
    e.Node.Text = "Foo";
}

Но когда я щелкаю узел, чтобы отредактировать его, в текстовом поле появляется «Foo (1234)».

Хорошо, тогда попробуем что-нибудь еще.

Я установил для treeView1.LabelEdit значение false, а затем делаю следующее:

private void treeView1_MouseClick(object sender, MouseEventArgs e)
{
    if (e.Button == MouseButtons.Left)
    {
        if (treeView1.SelectedNode == treeView1.GetNodeAt(e.Location))
        {
            treeView1.SelectedNode.Text = "Foo";
            treeView1.LabelEdit = true;
            treeView1.SelectedNode.BeginEdit();
        }
    }
}

А затем в AfterLabelEdit я снова установил LabelEdit на false.

И угадайте, что? Это тоже не работает. Он изменяет текст узла на «Foo», но текстовое поле редактирования не появляется.

Есть идеи? Спасибо

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
13
0
10 809
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Хех - я столкнулся с этим несколько лет назад. Я даже оставил предложение о подключении (проголосуйте за него!), Чтобы разрешить изменение метки в BeforeLabelEdit.

Один из вариантов (в WinForms - это другая история в WPF) - использовать настраиваемое рисование для ваших TreeNodes, чтобы фактическая метка по-прежнему была «Foo», а вы настраивали «(1234)» после нее. Хотя это немного больно.

Спасибо за ответ, попробую сделать с нестандартной росписью. И конечно проголосовал за ваше предложение :)

neo2862 08.10.2008 13:44
Ответ принят как подходящий

Наконец, я нашел решение к этому на CodeProject. Среди комментариев внизу вы также найдете портативное решение.

Другие вопросы по теме