как определить, когда winform usercontrol DesktopLocation изменилась - PullRequest
0 голосов
/ 05 июля 2011

Как следует из заголовка, как пользовательский контроллер может определить, когда его позиция на рабочем столе изменилась?

Например, можно определить, когда окно перемещено по рабочему столу, ИЛИ какой-нибудь контейнер более высокого уровня переместился в окно верхнего уровня, например, скользящий элемент управления типа

Аналогично тому, как работает событие LocationChanged, но это работает, только если пользовательский элемент управления переместился в свой контейнер, насколько я могу судить.

И в идеале то, что работает, если элемент управления размещен в WPF через windowsformhost

1 Ответ

0 голосов
/ 06 июля 2011

как упоминалось выше, вам следует избегать вашего подхода ... я могу просто предложить пойти на что-то еще ...

однако структура позволяет вам регистрироваться на событие перемещения ...

это событие существует для вашего элемента управления, представляя движение вашего элемента управления в его родительском контейнере ...
он также существует для родительского элемента управления, представляющего движение этого родительского элемента управления в контейнере «grandparent» ...
и т.д ...

, так как элемент управления знает своего родителя, вы, вероятно, можете проходить эту цепочку элементов управления до тех пор, пока не доберетесь до элемента управления верхнего уровня, и зарегистрировать каждое событие перемещения элементов управления по этой цепочке ... таким образом, вы должны получать уведомления при изменении экрана pos ...

я уже говорил, что вы НЕ ДОЛЖНЫ это делать? ... хорошо, вы были предупреждены ...

...