2

似乎不可能在 webBrowser 控件中禁用打印。

这是我尝试过的:

  • 将 WebBrowserShortcutsEnabled 设置为 FALSE

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

    • 这似乎根本没有做任何事情。
  • 使用 Webbrowser 的 PreviewKeyDown

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

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

必须有某种方法来实现这一点?谢谢。

4

3 回答 3

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> 
于 2012-11-06T09:03:21.457 回答
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/

于 2012-11-08T05:12:50.863 回答
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 事件中附加到文档:

于 2013-01-03T16:28:19.793 回答