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


Автор: N1ko 31.8.2010, 17:21
Здравствуйте. Подскажите плз, как програмно кликнуть по определённому TreeNode?

Автор: ДобренькийПапаша 1.9.2010, 14:44
А с какой целью? Зачем вам это? У TreeNode нет метода PerformClick() к сожалению. Эмулировать клик по узлу, наверно, не так просто)))

Просто зачем вам это? Может мы что-нибудь придумаем))) Что по клику должно произойти?

Автор: N1ko 2.9.2010, 09:20
Ну наверное я что то неправильн делаю значит... В общем у меня выставлено событие на клик по узлу. В нём находится достаточно объёмный код. Но есть один случай когда мне нужно выполнить все те же действия без участия пользователя. Если быть точнее то мне нужно вызвать событие клика, когда я вызываю определённое событие из контекстного меню определённого узла.
Делаю я пока следующим образом (но думаю что это не самый оптимальный путь)

Код

//Поле для хранения координат узла, по которому было совершено нажатие правой клавишей
 private Point currentNodeLocation;

 private void FrmTVFileStructure_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
     {
        //выполняем действия
     }

 private void FrmTVFileStructure_MouseDown(object sender, MouseEventArgs e)
     {
            //Получаем координаты узла, по которому кликнули
            if (e.Button == MouseButtons.Right)
            {
                   this.FrmTVFileStructure.SelectedNode = this.FrmTVFileStructure.GetNodeAt(e.Location);
            }
            this.currentNodeLocation = e.Location;
     }

   //Вызов события из контекстного меню определённого узла
   private void FrmTSMICheck_Click(object sender, EventArgs e)
     {
          //Вызов события клика
          this.FrmTVFileStructure_NodeMouseClick(sender, new TreeNodeMouseClickEventArgs(this.FrmTVFileStructure.SelectedNode, MouseButtons.Left, 1, this.currentNodeLocation.X, this.currentNodeLocation.Y));
     }


В общем вот так вот коряво. Можно как то это оптимизировать? =)

Автор: CYBERDREAM 2.9.2010, 16:50
Приветствую.
Так оберни "объёмный код" в метод, и вызывай его как при клике на узел  так и при  чем то еще.

Автор: N1ko 5.9.2010, 01:25
Возможно немного неуместный вопрос, но если допустим создавать такие методы, то лучше описывать их в том же файлике либо создавать какой нить дополнительный класс? Меня просто интересует даная ситуация с точки зрения правильности написания кода.

Автор: Экскалупатор 5.9.2010, 01:40
с точки зрения 
Цитата(N1ko @  5.9.2010,  00:25 Найти цитируемый пост)
правильности написания кода. 

тут все подчиняется обычной объектной логике, к чему код относиться там он и должен быть.

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