Как определить вход / выход элемента управления для каждого приложения без доступа к форме элемента управления? - PullRequest
1 голос
/ 22 февраля 2009

Я могу использовать события Control.Enter и Control.Leave, чтобы определить, когда фокус пользователя входит или выходит из элемента управления, но это работает только для каждой формы. Я использую более одной формы в своем приложении и хочу отслеживать, какой элемент управления находится в фокусе пользователя, я должен использовать события Активированные и Деактивированные формы, чтобы отслеживать, какая форма активна, а затем отслеживать, какой элемент управления сфокусирован в каждой форме. *

Мы создаем клиент с помощью пакета DockPanel, поэтому у нас нет прямого доступа к формам элементов управления. Мы не можем просто добавить слушателей в форму верхнего уровня элемента управления, потому что это меняется, когда пользователь устанавливает или отсоединяет панель. Но нам все еще нужно отслеживать фокус для каждого приложения. Как обнаружить вход / выход элемента управления для каждого приложения без доступа к форме элемента управления?

Ответы [ 2 ]

1 голос
/ 22 февраля 2009

Не могли бы вы вместо этого подключиться к Control.GotFocus / Control.LostFocus и затем отслеживать, какой элемент управления в данный момент имеет фокус?

Добавление этих перехватчиков событий к каждому элементу управления будет довольно утомительным и подверженным ошибкам, так как вы можете пропустить интересующий элемент управления. Так что вместо этого используйте Application.AddMessageFilter вызов для того, чтобы получить обратный вызов для каждого сообщения Windows, которое появляется в приложении.

Затем вы можете наблюдать за всеми вызовами WM ___ SETFOCUS и WM_KILLFOCUS и записывать текущее управление с фокусом. Не забывайте использовать удобный статический метод Control.FromHandle , чтобы получить красивую ссылку на элемент управления .NET из дескриптора окна, который вы кэшируете при отслеживании двух сообщений Windows.

0 голосов
/ 22 февраля 2009

Может быть, проверить инъекции зависимостей контейнера Unity Aplication Block и Inversion of Control (IOC)?

http://codebetter.com/blogs/david.hayden/archive/2008/02/22/unity-ioc-screencast.aspx

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