WebBrowser 控件 TextInput 事件

WebBrowser Control TextInput events

我正在努力使用 WebBrowser 控件(在 Winforms 和 WPF 中)。基本上我想实现与 RTF 编辑器相同的行为:处理某种 OnTextInput 事件以获取每次击键的最后键入字符.

我指的是文本字符,而不是可以使用 Keydown/Keyup 事件捕获的 Control、Alt、F5、Enter 等。

有什么帮助吗?提前致谢。

您可以处理 KeyPress 事件 this.webBrowser1.Document.Body:

private void Form1_Load(object sender, EventArgs e)
{
    this.webBrowser1.Navigate("http://www.google.com");
    //Attach a handler to DocumentCompleted
    this.webBrowser1.DocumentCompleted += webBrowser1_DocumentCompleted;
}


void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    //Attach a handler to Body.KeyPress when the document completed
    this.webBrowser1.Document.Body.KeyPress += Body_KeyPress;
}

void Body_KeyPress(object sender, HtmlElementEventArgs e)
{
    //handle the event, for example show a message box
    MessageBox.Show(((char)e.KeyPressedCode).ToString());
}

注:

  • 它不会按照您的需要处理非输入键。
  • 如果需要,您还可以根据某些条件设置 e.ReturnValue = false; 来抑制输入。
  • 您还可以用同样的方式处理其他按键事件,例如 KeyUpKeyDown