2009-03-16 4 views
7

Я использую элемент управления WebBrowser в приложении C# и хочу обрабатывать все ключевые события, в то время как WebBrowser имеет фокус, независимо от того, какой именно элемент контента (поле ввода, ссылка и т. Д.) Сфокусирован. Я попытался просто добавить обработчик событий в элемент управления браузера KeyDown, но это не сработает. Я не хочу явно привязывать обработчик к каждому настраиваемому HtmlElement.Управление ключевыми событиями в элементе управления WebBrowser

Как я могу получить все ключевые события до, они передаются в браузер или его элементы контента?

ответ

9

у вас есть событие PreviewKeyDown, просто подключите его.

private void wb_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e) 
{ 
    // your code handling the keys here, like: 
    if (e.Control && e.KeyCode == Keys.C) 
    { 
     // Do something funny! 
    } 
} 
+1

Он работает, даже если 'WebBrowserShortcutsEnabled' установлен на' False' – prostynick

2

Если вы хотите сделать что-то вроде обходя ключ Enter в элементе управления WebBrowser вы не повезло, потому что нет KeyPress или события KeyDown для элемента управления. KeyPreviewDownEventArgs не предоставляет никакого способа обхода нажатия клавиши. Единственный способ сделать это - переопределить функцию ProcessCmdKey формы, в которой находится элемент управления. Пример:

Protected Overrides Function ProcessCmdKey(ByRef msg As Message, keyData As Keys) As Boolean 

    If keyData <> Keys.Enter Then Return MyBase.ProcessCmdKey(msg, keyData) 
    Return True 

End Function 
0

Вы можете добавить обработчики ключей в элемент Body загруженного документа. По умолчанию это позволяет получить одно и то же событие, происходящее в любом дочернем элементе элемента body.

webBrowser.Document.Body.KeyDown += MyKeyDownHandler; 
... 
private void MyKeyDownHandler(object sender, HtmlElementEventArgs e) 
{ 
    // Set e.ReturnValue false if you want to cancel the key press 
} 

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

Смежные вопросы