我正在努力與WebBrowser
控件(在Winforms和WPF中)。基本上我想要達到與RTF
編輯器相同的行爲:處理某種事件OnTextInput
事件以獲取每個擊鍵的最後一個鍵入字符。WebBrowser控件TextInput事件
我的意思是可以用Keydown/Keyup
事件捕獲的文本字符,而不是Control,Alt,F5,Enter,...。
任何幫助?提前致謝。
我正在努力與WebBrowser
控件(在Winforms和WPF中)。基本上我想要達到與RTF
編輯器相同的行爲:處理某種事件OnTextInput
事件以獲取每個擊鍵的最後一個鍵入字符。WebBrowser控件TextInput事件
我的意思是可以用Keydown/Keyup
事件捕獲的文本字符,而不是Control,Alt,F5,Enter,...。
任何幫助?提前致謝。
可以hanlde 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;
來抑制輸入。KeyUp
和KeyDown
以同樣的方式感謝您的回答,但我並不完全瞭解它。這樣,MessageBox將只顯示一半的時間,對吧?我想爲每個「文本」按鍵組成一個過濾器,以便我不確定這是否合適。 –
顯示'MessageBox'只是一個示例,您可以使用'((char)e.KeyValue).ToString()'。主要的一點是使用你要求的'PreviewKeyDown'事件**處理某種OnTextInput事件,以便獲得每個擊鍵的最後一個鍵入的字符。**我認爲該文章回答你的問題:) –
是的,但這種方式當F1,F2,Fx ...,Ctrl,Alt,Mayus,ArrowLeft,ArrowRight等等時,它也會被觸發。是否有任何「智能」方法來防止添加這些類型的擊鍵? WPF RichTextBox控件已經提供了在這些情況下未觸發的OnTextInput。 –
哪裏的內容從何而來?內容是否來自屬於您的html文件? –
是的,我使用DesignMode和NavigateToString結合來創建來自數據庫的HTML文檔。 –
你想處理關鍵事件? –