Как получить ссылку на редактируемый узел дерева?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Как получить ссылку на редактируемый узел дерева?

Сообщение Хакер » 02.08.2009 (Вс) 2:15

Речь идёт о COM-обёртке над TreeView.

TreeView имеет фичу, позволяющую юзеру редактировать надпись узла. Для контроля этого процесса в обертке имеются события BeforeLabelEdit и AfterLabelEdit.

Я могу ошибаться, но мне кажется, разработчики COM-обёртки имели очень наивный взгляд на жизнь: если в оригинале (нотификация TVN_ENDLABELEDIT) есть возможность получить данные о редактирумом узле (ноде), то в COM-обертке эта возможность, к сожалению, не отразилась.

Задача состоит в том, чтобы из обработчика события AfterLabelEdit получить ссылку на ноду, редактирование которой закончилось.
Предлагаю общественности поговорить на тему того, как это сделать наиболее правильным и красивым образом.

Заранее предупреждаю: не стоит постить сюда первый пришедший вам в голову способ. Мне интересны правильные и красивые способы, а не абы-какие; мне интересно увидеть способ, который будет правильнее и красивее, чем смог бы придумать я сам.

Предостерегаю вас от запощивания примитивных заведомо неправильных ответов:
  • «Через TreeView.SelectedItem». Не подходит. У TreeView выбранным может быть один узел, а редактироваться — другой.
  • «Перехватывать нотификацию». Во-первых, некрасиво, во-вторых, оттуда не достать ссылки на объект класса Node.
  • «Держать для каждого TreeView переменную, в которую записывать ссылку на редактируемый узел из BeforeLabelEdit». Во-первых, я и так знаю этот способ. Во-вторых, когда сбрасывать ссылку в Nothing?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Как получить ссылку на редактируемый узел дерева?

Сообщение alibek » 02.08.2009 (Вс) 10:10

1. Зачем очищать ссылку?
2. При смене узла происходит NodeClick, там и обновлять ссылку.
Lasciate ogni speranza, voi ch'entrate.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Как получить ссылку на редактируемый узел дерева?

Сообщение Хакер » 02.08.2009 (Вс) 16:08

1. Чтобы ненужный объект Node вовремя умер. Ничего страшного в том, что он проживёт чуть больше, чем ему положено, но всё равно, некрасиво как-то.

2. Это и есть способ номер 3, только событие другое. Только выглядит более понятным запоминание ссылки именно в BeforeLabelEdit.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 38

    TopList