SLa*_*aks 9 .net c# keyboard-shortcuts webbrowser-control winforms
我有一个WebBrowser控件显示一些HTML.
我希望用户能够复制整个文档,但不能做任何其他事情.
我已将IsWebBrowserContextMenuEnabled和WebBrowserShortcutsEnabled属性设置为false,并且我想KeyUp在用户按下Ctrl + C时处理并运行一些代码.
我怎样才能做到这一点?
WebBrowser控件不支持键盘事件.
我尝试使用表单的KeyUp事件KeyPreview,但它根本没有触发.
编辑:这是我的解决方案,灵感来自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", false, null);
Document.ExecCommand("Unselect", false, null);
}
}
Run Code Online (Sandbox Code Playgroud)
小智 10
你也可以尝试这种方法.把它放在你的主表单区域,它应该捕获所有的键盘命令.我用它来为动态创建的标签添加键盘快捷键.
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;
Run Code Online (Sandbox Code Playgroud)