c# – WebBrowser键盘快捷键

我有一个Webbrowser控件显示一些 HTML.
我希望用户能够复制整个文档,但不要做任何其他操作.

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

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

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

class copyableWebbrowser : Webbrowser {
    public override bool PreProcessMessage(ref Message msg) {
        if (msg.Msg == 0x101    //WM_KEYUP
         && msg.WParam.ToInt32() == (int)Keys.C && ModifierKeys == Keys.Control) {
            Docopy();
            return true;
        }
        return base.PreProcessMessage(ref msg);
    }
    void Docopy() {
        Document.ExecCommand("SelectAll",false,null);
        Document.ExecCommand("copy",null);
        Document.ExecCommand("Unselect",null);
    }
}

解决方法

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

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...