Фокус окна WPF - PullRequest
       1

Фокус окна WPF

0 голосов
/ 25 августа 2010

У меня есть приложение (скажем, App1). Он имеет сетку данных, которая содержит элементы данных. Если щелкнуть правой кнопкой мыши элемент данных, откроется окно «Сведения об элементе». Однако App1 не делает это напрямую. Вместо этого он общается с другим приложением, скажем, App2, и App2 фактически отображает окно «Сведения об элементе». Моя проблема заключается в следующем: 1. Откройте App2, а затем сверните его до панели задач. 2. В App1 щелкните правой кнопкой мыши элемент данных, чтобы открыть окно «Сведения об элементе». 3. Окно «Сведения об элементе» выходит вперед, но не имеет фокуса (строка заголовка серого цвета). App1 по-прежнему имеет фокус. 4. Если закрыть окно «Сведения об элементе» и повторить шаг 2, на этот раз окно «Сведения об элементе» не только выходит вперед, но и имеет фокус. 5. Если я снова выполню шаг 1, то получу тот же результат, что и на шаге 3.

Я также заметил, что у меня есть эта проблема на некоторых компьютерах, но не на других.

Я пробовал различные методы, чтобы сфокусироваться на окне «Сведения об элементе», но не смог. Метод Focus () просто возвращает false.

(На самом деле, поначалу окно «Сведения об элементе» даже не выходило на передний план, но я установил для «Topmost» значение true, когда окно инициализируется, и установил его обратно в false после рендеринга содержимого, что заставляет окно выйти вперед.)

Ответы [ 3 ]

0 голосов
/ 26 августа 2010

Невозможно установить App1 как владельца App2.Это не связанные приложения.Единственный способ, которым App1 может общаться с App2, - это сообщения Windows.Я пытался установить App2 в качестве владельца окна «Сведения об элементе», но это не решило проблему.

0 голосов
/ 01 сентября 2010

Нашел решение этой проблемы. App1 должен вызвать AllowSetForegroundWindow (...), чтобы App2 мог установить окно переднего плана. См. Документацию MSDN для AllowSetForegroundWindow.

0 голосов
/ 25 августа 2010

Полагаю.Зачем вам нужно установить TopMost?Вместо этого вы должны установить владельца App2 как App1.

HTH

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