Acrobat Reader ActiveX в WebBrowser крадет фокус [C #] - PullRequest
4 голосов
/ 22 марта 2010

Я использую webBrowser.Navigate(url) элемент управления для отображения страницы.
Я заметил, что это действие крадет фокус у текущего элемента управления (сетки), и затем у меня возникла проблема с фокусировкой сетки назад (усталый myGrid.Focus, .Select и т. Д.)..)
Это действительно раздражающее поведение браузера ...

Кто-нибудь знает, как предотвратить кражу фокуса браузером или (если нет), чтобы принудительно вернуть управление назад?

РЕДАКТИРОВАТЬ:
Я также попытался webBrowser.DocumentCompleted событие, чтобы сосредоточиться обратно на сетку

РЕДАКТИРОВАТЬ 2
Хороший случай для проверки это открытие PDF файлов webBrowser.Navigate(@"C:\TEMP\test.pdf") Я считаю, что это проблема ActiveX.На первый взгляд кажется, что это не проблема с контролем фокуса, а потеря всей формы фокуса ...

РЕДАКТИРОВАТЬ 3
Я попробовал другой подход: событие KeyPress формы: я думал, что яможет захватывать keyPress формы и перемещать фокус из ActiveX WebBrowser / AdobeReader на мой контроль.Но на удивление событие не состоялось!Looks Reader взял на себя все управление, и нет никакого способа сделать что-либо программно, пока вы не нажмете мышью на (как минимум) заголовок формы

Любые советы?

1 Ответ

3 голосов
/ 25 марта 2010

Как сказал @nobugz - кажется, я нашел побочный эффект при использовании элемента управления Adobe Reader ActiveX.

Я думаю, что нашел решение для этого.Не очень элегантно - но работает для меня ...:)
Вот как я архивирую управление фокусировкой обратно, используя Таймер и документ браузера Завершено событие:

    private void webBrowser1_DocumentCompleted( object sender, WebBrowserDocumentCompletedEventArgs e ) {
        timer1.Interval = 100;
        timer1.Start();
    }

    private void timer1_Tick( object sender, EventArgs e ) {
        if (this.textBox1.Focused) {
            timer1.Stop();
            return;
        }

        this.textBox1.Focus();
    }
...