Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > WPF и Silverlight > События MouseRightButtonUp и MouseLeftButtonUp


Автор: mephistopheies 26.11.2008, 17:32
Есть вот такой код
Код

System.Windows.Window w = new System.Windows.Window();

/*
далее идет какая то инициализация окна, и допустим туда добавилось меню
*/

w.MouseRightButtonUp += new System.Windows.Input.MouseButtonEventHandler(w_MouseRightButtonUp);
w.MouseLeftButtonUp +=new System.Windows.Input.MouseButtonEventHandler(w_MouseLeftButtonUp);


так вот, тыкая на меню правой кнопкой, у окна вылетает событие w_MouseRightButtonUp, в sender как и следовало ожидать лежит w, а в MouseButtonEventArgs содержится ссылка на тот элемент куда реально был клик, например на меню.

а вот при клике по меню левой кнопкой, нифига w_MouseLeftButtonUp не вылетает. но если тыкнуть в другое место окна, то все ок.

так вот в чем фишка, сталкивался ли кто нибудь с такой ситуацией, и как сделать что бы w_MouseLeftButtonUp срабатывало?

Автор: kelus 27.11.2008, 17:38
а почему бы не повесить дополнительное событие на само меню?

Автор: mephistopheies 27.11.2008, 17:43
Цитата

а почему бы не повесить дополнительное событие на само меню? 

ну по идее так и должно было бы быть, но раз MouseRightButtonUp упрощает работу, то тоже следовало бы ожидать и от MouseLeftButtonUp 

это было бы удобно юзать, когда у тебя есть xaml, ты генеришь форму по нему, и что бы не подписываться на клик каждого контрола, просто подписался на клик по окну, а там уже смотришь куда реально тыкнули. как бы заранее не известно что в xaml'е, и неудобно подписываться на все, т.е. нада обойти все объекты в окне и т.д.

Автор: kelus 27.11.2008, 18:43
возникла одна догадка - проверил, как оказалось, отдельный обработчик для левой кнопки на  меню тоже не работает.
есть мнение, что там присутствует свой обработчик, который глушит остальные.

Автор: Partizan 27.11.2008, 19:41
есть мнение, что надо обрабатывать события Preview.....

Автор: mephistopheies 28.11.2008, 14:10
Partizan, спасибо, работает =)

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