c# – WebBrowser键盘快捷键

前端之家收集整理的这篇文章主要介绍了c# – WebBrowser键盘快捷键前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_403_0@
我有一个WebBrowser控件显示一些 HTML.
我希望用户能够复制整个文档,但不要做任何其他操作.

我将IsWebBrowserContextMenuEnabled和WebBrowserShortcutsEnabled属性设置为false,并且我想处理KeyUp并在用户按Ctrl C时运行一些代码.

我怎样才能做到这一点?
WebBrowser控件不支持键盘事件.
我尝试使用KeyPreview表单的KeyUp事件,但它根本没有触发.

编辑:这是我的解决方案,灵感来自于Jerb的答案.

  1. class CopyableWebBrowser : WebBrowser {
  2. public override bool PreProcessMessage(ref Message msg) {
  3. if (msg.Msg == 0x101 //WM_KEYUP
  4. && msg.WParam.ToInt32() == (int)Keys.C && ModifierKeys == Keys.Control) {
  5. DoCopy();
  6. return true;
  7. }
  8. return base.PreProcessMessage(ref msg);
  9. }
  10. void DoCopy() {
  11. Document.ExecCommand("SelectAll",false,null);
  12. Document.ExecCommand("Copy",null);
  13. Document.ExecCommand("Unselect",null);
  14. }
  15. }

解决方法

你也可以尝试这个方法.将其放在主窗体区域,并且应该捕获所有的键盘命令.我用它来添加键盘快捷键到动态创建的选项卡.
  1. protected override bool ProcessCmdKey(ref Message msg,Keys keyData) {
  2. switch (keyData)
  3. {
  4. case Keys.Control|Keys.Tab:
  5. NextTab();
  6. return true;
  7. case Keys.Control|Keys.Shift|Keys.Tab:
  8. PrevIoUsTab();
  9. return true;
  10. case Keys.Control|Keys.N:
  11. CreateConnection(null);
  12. return true;
  13. }
  14. return false;

猜你在找的C#相关文章