c # Как изменить фокус окна на событии - PullRequest
1 голос
/ 21 мая 2009

У меня есть приложение WPF, которое я хотел бы стать текущим сфокусированным окном всякий раз, когда курсор мыши перемещается над ним. В настоящее время у меня есть событие onMouseEnter, которое меняет курсор, когда мышь перемещается над ним, поэтому я знаю, что система распознает это, однако я хочу, чтобы само приложение стало фокусированным, как если бы пользователь использовал щелчок левой кнопкой мыши на нем - поэтому я Затем можно выполнить другие операции. В настоящий момент, если я наведу курсор на него, курсор изменится, но если другое приложение, например - блокнот, будет иметь фокус, фокус вернется к этому после.

В обработчике onMouseEnter я пробовал «this.Focus ()» и «this.Activate ()», но ни один из них не достиг того же результата, как если бы я нажал на приложение.

Есть идеи?

Ответы [ 3 ]

1 голос
/ 31 декабря 2017

WPF C # Пример с событием MouseEnter, прикрепленным к элементу управления Grid. Если другое окно приложения имеет фокус, оно удалит его и прикрепит фокус к главному окну, как если бы пользователь щелкнул по нему левой кнопкой мыши.

    private void GrdContent_MouseEnter(object sender, MouseEventArgs e)
    {
        Application.Current.MainWindow.Activate();
    }
0 голосов
/ 10 января 2019

В WPF просто добавьте эту строку в конструктор MainWindow, чтобы получить ожидаемый результат.

MouseEnter += (s, e) => Activate();

Этот оригинальный однострочный ответ будет работать, только если вы не взаимодействуете ни с каким другим окном. Следующее будет работать даже в этом случае, но вам понадобится пакет Nuget "AutoItX.Dotnet".

private IntPtr myHandle;
public MainWindow() {
  myHandle =  new System.Windows.Interop.WindowInteropHelper(this).Handle;
  MouseEnter += (s, e) => {
    Activate();
    if (AutoIt.AutoItX.WinActive(myHandle) == 0)
      AutoIt.AutoItX.WinActivate(myHandle);
    };
0 голосов
/ 21 мая 2009

Редактировать: Опубликованный ответ не будет работать для WPF. К сожалению.

Попробуйте вместо этого посмотреть на WPF: http://blogs.msdn.com/nickkramer/archive/2006/03/18/554235.aspx

...