C# 禁用Ctrl+;webBrowser控件中的P
似乎不可能在webBrowser控件中禁用打印 以下是我尝试过的:C# 禁用Ctrl+;webBrowser控件中的P,c#,browser,webbrowser-control,C#,Browser,Webbrowser Control,似乎不可能在webBrowser控件中禁用打印 以下是我尝试过的: 将WebBrowserShortcutsEnabled设置为FALSE 按ctrl+p时仍会显示打印对话框。这种行为看起来很奇怪,但根据我的测试,您可以在webbrowser控件仍具有焦点的情况下触发该对话框。如果单击另一个控件使webbrowser失去焦点,然后再次单击webbrowser,则无法触发打印对话框 在窗体的KeyDown事件中重写Ctrl+p 这似乎没有任何作用 使用Webbrowser的Preview
- 将WebBrowserShortcutsEnabled设置为FALSE
- 按ctrl+p时仍会显示打印对话框。这种行为看起来很奇怪,但根据我的测试,您可以在webbrowser控件仍具有焦点的情况下触发该对话框。如果单击另一个控件使webbrowser失去焦点,然后再次单击webbrowser,则无法触发打印对话框
- 在窗体的KeyDown事件中重写Ctrl+p
- 这似乎没有任何作用
- 使用Webbrowser的PreviewKeyDown
- 这似乎不是为了截取键,只是预览它们,因为你不能用它取消按键
一定有办法做到这一点?谢谢。您可以尝试通过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>
.noprint{display:none}
这个可以打印
这个不能打印
这个可以打印
工作示例
$(document).ready(function(e){
$('body').keydown(function(event) {
// alert('this');
if (event.which == 80 && event.ctrlKey) {
return false;
//alert('me');
}
});
});
最干净的方法可能是使用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事件中的文档:这是一个有趣的解决方案-谢谢。不过,我的客户希望打印对话框根本不显示。