TreeView имеет фичу, позволяющую юзеру редактировать надпись узла. Для контроля этого процесса в обертке имеются события BeforeLabelEdit и AfterLabelEdit.
Я могу ошибаться, но мне кажется, разработчики COM-обёртки имели очень наивный взгляд на жизнь: если в оригинале (нотификация TVN_ENDLABELEDIT) есть возможность получить данные о редактирумом узле (ноде), то в COM-обертке эта возможность, к сожалению, не отразилась.
Задача состоит в том, чтобы из обработчика события AfterLabelEdit получить ссылку на ноду, редактирование которой закончилось.
Предлагаю общественности поговорить на тему того, как это сделать наиболее правильным и красивым образом.
Заранее предупреждаю: не стоит постить сюда первый пришедший вам в голову способ. Мне интересны правильные и красивые способы, а не абы-какие; мне интересно увидеть способ, который будет правильнее и красивее, чем смог бы придумать я сам.
Предостерегаю вас от запощивания примитивных заведомо неправильных ответов:
- «Через TreeView.SelectedItem». Не подходит. У TreeView выбранным может быть один узел, а редактироваться — другой.
- «Перехватывать нотификацию». Во-первых, некрасиво, во-вторых, оттуда не достать ссылки на объект класса Node.
- «Держать для каждого TreeView переменную, в которую записывать ссылку на редактируемый узел из BeforeLabelEdit». Во-первых, я и так знаю этот способ. Во-вторых, когда сбрасывать ссылку в Nothing?