在webBrowser控件中禁用Ctrl + P.

时间:2012-11-06 08:43:25

标签: c# browser webbrowser-control

似乎无法在webBrowser控件中禁用打印。

这是我尝试过的:

  • 将WebBrowserShortcutsEnabled设置为FALSE

    • 按ctrl + p时仍显示打印对话框。这种行为看起来很奇怪,但是从我的测试中,你可以在webbrowser控件仍然具有焦点时触发对话框。如果单击另一个控件以使webbrowser失去焦点,再次单击Web浏览器,则无法触发打印对话框。
  • 在Form的KeyDown事件中覆盖Ctrl + P

    • 这似乎什么都没做。
  • 使用Webbrowser的PreviewKeyDown

    • 这似乎并不是为了拦截密钥,只是预览它们,因为你无法用它取消按键。

如果禁用所有键盘快捷键,那将是最佳选择。

必须有某种方法来实现这一目标吗?感谢。

3 个答案:

答案 0 :(得分:1)

您可以尝试通过CSS禁用打印。

<style type="text/css" media="print">
 .noprint { display:none }
 </style>


<body>
 <div> This can print</div> 
<div class="noprint"> This can't print</div> 
<div> This can print</div> 
</body> 

答案 1 :(得分:1)

工作示例..

$(document).ready(function(e){
    $('body').keydown(function(event) {
       // alert('this');
        if (event.which == 80 && event.ctrlKey) {
            return false;
             //alert('me');   
        }
    });
});

http://jsfiddle.net/rhPxU/

答案 2 :(得分:1)

最干净的方法可能是使用IDocHostUIHandler的TranslateAccelerator方法。另一方面,它是相当多的代码和处理HtmlInterop类的需要。

然后代码可以如下所示:

int IDocHostUIHandler.TranslateAccelerator(ref tagMSG msg, ref Guid group, uint nCmdID)
{
  KeyEventArgs e = new KeyEventArgs((Keys)((int)msg.wParam & 0xff) | Control.ModifierKeys);
  if (e.Modifiers == Keys.Control && e.KeyCode == Keys.P )
    return 0;
  return 1;
}

DocHostUIHandler可以附加到DocumentCompleted事件中的文档: