Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > TreeView - переход в режим редактирования узла


Автор: Papirus 26.12.2006, 13:47
Собственно, надо как в виндозном проводнике. При создании нового узла (TreeNode) текст, например "Новая папка", должен быть выделен и готов к редактированию. smile

Добавлено @ 13:48 
Блиннннннннннннннннн! Юбилейное сообщение оказалось (256)  smile 
Надо отметить! smile

Добавлено @ 13:50 
Конечно, речь идет только о тех случаях, когда узел создает пользователь.

Автор: Naum 26.12.2006, 14:23
При добавлении нового узла:

Код

 treeView1.Nodes.Add();
 treeView1.Nodes.Insert();


(в обоих случаях мы знаем, где расположен новый узел, пусть newTreeNode;
1. Выделяем его 
Код
 treeView1.SelectedNode=newTreeNode; 

2. Ставим у treeView свойство  LabelEdit в true (это позволяет редактировать текст узлов пользователю) 
Код
 treeView1.LabelEdit=true; 

3. Добавляем новый handler на событие дерева AfterLabelEdit 
Код
treeView1.AfterLabelEdit += new System.Windows.Forms.NodeLabelEditEventHandler(this.treeView1_AfterLabelEdit);

4. Начинаем редактирование вновь созданного узла 
Код
newTreeNode.BeginEdit();

В процедуре treeView1_AfterLableEdit
Код

 treeView1.LabelEdit=false; //т.е. можно редактировать только новые узлы


Добавлено @ 14:35 
Не. BeginEdit() это не то.

Добавлено @ 14:35 
 smile 

Автор: Papirus 27.12.2006, 11:04
Спасибо, конечно, Naum. Однако все это очевидно и уже давно сделано. Вопрос то в том, что узел создается и выделяется, НО... для редактирвоания текста пользователь должен повторно кликнуть лейбл. И только потом он сможет его изменить. Вот этот-то момент меня и интересует!!!  smile 
В случае текстбокса, чтобы выделить в нем программно текст, можно использовать, например Select()
Код

TextBox1.Select(2, 5)


 А вот в методах TreeNode ничего подобного я не нашел... Очень надеюсь, что плохо искал smile 

Автор: Naum 27.12.2006, 12:26
Цитата(Naum @  26.12.2006,  15:23 Найти цитируемый пост)
Не. BeginEdit() это не то.

Все таки BeginEdit() то, что надо. 

Вот пример обработчика клика по кнопке button1, который добавляет новый узел и выделяет текст в нем для редактирования
Код

         private void button1_Click(object sender, System.EventArgs e)
        {
            this.treeView1.SelectedNode.Nodes.Add("New node");
            this.treeView1.SelectedNode=this.treeView1.SelectedNode.Nodes[0];
            this.treeView1.SelectedNode.BeginEdit();
        }

Автор: Papirus 27.12.2006, 12:36
РРРаботает!! Спасибо!!

Автор: Naum 27.12.2006, 12:43
Цитата(Papirus @  27.12.2006,  13:36 Найти цитируемый пост)
Спасибо!! 

Спасибо не булькает smile С тебя шампанское. На Новый год!!! smile 

Автор: Papirus 28.12.2006, 09:16
Цитата(Naum @  27.12.2006,  12:43 Найти цитируемый пост)
Спасибо не булькает  С тебя шампанское. На Новый год!!!  

Океюшки!! Наливаю!!!!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)