我有一个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;