Разработка рабочего стола: помните цель после потери фокуса - PullRequest
2 голосов
/ 08 мая 2009

Можно ли взять фокус из другой программы, чтобы ответить на событие, но затем, как только ответ был обработан, переключиться обратно на предыдущую программу и восстановить курсор там, где он был?

Это звучит как странный вопрос, но подумайте об этом в духе

  1. Пользователь вводит текстовое поле в Программа A .
  2. Появляется окно для Программа B , и пользователь нажимает несколько кнопок для подтверждения чего-либо.
  3. Программа B возвращает управление Программа A и восстанавливает выделение текстового поля.

Если есть полное решение на C #, то отлично, но, похоже, это может потребовать немного больше усилий, чем обычно.

Есть мысли?

Ответы [ 2 ]

1 голос
/ 09 мая 2009

По моему опыту, программы для Windows работают именно так. Часто кажется, что это не так, потому что пользователь возвращает фокус щелчком мыши, который сам сбрасывает фокус. Если это приложение winforms, вы, вероятно, можете что-то сделать с потерянным фокусом / событиями фокусировки на уровне формы.

1 голос
/ 09 мая 2009

Лично это может привести к тому, что пользователь выберет нежелательные значения во всплывающем окне. Например, кто-то печатает в Word. Ваше приложение выскакивает окно, где нажатие «Enter» выбирает значение ..., например, кнопку по умолчанию. Не желая, пользователь "выбрал" неверное значение в вашей форме.

Сама Windows склонна это делать, и это очень раздражает. Если дважды щелкнуть ярлык на рабочем столе, чтобы открыть приложение, а затем переключиться обратно (например, на электронную почту) до его запуска, это приведет к удалению фокуса из сфокусированного окна электронной почты и установке фокуса в только что открывшемся приложении. , в результате чего текст вашей электронной почты или нажатия клавиш переместятся в только что открывшееся окно.

...