А именно, у меня есть кнопка, которая открывает немодальное дочернее окно. Что-то в главном окне крадет фокус далеко от дочернего окна, когда это открывается.
Полностью общий подход должен прокомментировать части кода, пока проблема не уходит. Я ищу более быстрые методы.
Вы можете попытаться отслеживать вызовы метода System.Window.UIElement.Focus (в PresentationCore.dll) в контексте вашего приложения, используя Runtime Flow (разработан мной).
Вы можете попробовать использовать такой инструмент, как UI Spy или Snoop, чтобы следить за событием, которое меняет фокус. Я не использовал эти инструменты для этой цели, но полагаю, что они могут вам помочь.
Не могли бы вы упомянуть основные операции (не вдаваясь в специфику клиента - если это клиентский проект) - например, есть ли какие-либо события, подключенные к элементам, любые другие операции, происходящие при нажатии на кнопку - все, что происходит для любого элемента в родительском окне после отображения дочернего окна, которое крадет фокус. Также проверьте все связанные события, которые происходят во время нажатия кнопки.
Вот некоторые из способов, с которых вы можете начать свое расследование.
Я сам не пробовал поэтому не могу сказать точные шаги, но вы можете попробовать использовать FocusManager.FocusedElement и FocusManager.GetFocusedElement Method , чтобы попытаться найти элемент, крадущий фокус из вашего дочернего окна.
Другая полезная ссылка -
Обзор фокуса (Есть код для получения сфокусированный элемент): http://msdn.microsoft.com/en-us/library/aa969768.aspx # Focus_Events
Я только что прочитал о каком-то тупике ... надеюсь, это поможет (ищите control.leave на msdn.microwoft.com
Внимание! Не пытайтесь установить фокус из обработчиков событий Enter, GotFocus, Leave, LostFocus, Validating или Validated. Это может привести к тому, что ваше приложение или операционная система перестанут отвечать. Для получения дополнительной информации см. Тему WM_KILLFOCUS в разделе «Справочник по вводу с клавиатуры» и раздел «Тупиковые ситуации для сообщений» в теме «О сообщениях и очередях сообщений» в библиотеке MSDN по адресу http://msdn.microsoft. com / library .