2

webBrowser コントロールで印刷を無効にすることは不可能のようです。

これが私が試したことです:

  • WebBrowserShortcutsEnabled を FALSE に設定する

    • ctrl+p を押すと、印刷ダイアログが表示されます。動作は奇妙に思えますが、私のテストでは、Web ブラウザー コントロールにまだフォーカスがあるときにダイアログをトリガーできます。別のコントロールをクリックして Web ブラウザーがフォーカスを失い、Web ブラウザーを再度クリックすると、印刷ダイアログをトリガーできません。
  • フォームの KeyDown イベントで Ctrl+P をオーバーライドする

    • これはまったく何もしていないようです。
  • Webbrowser の PreviewKeyDown を使用する

    • これはキーを傍受することを意図していないようです。キープレスをキャンセルできないため、単にプレビューするだけです。

すべてのキーボード ショートカットが無効になっていると最適です。

これを達成する方法があるはずですか?ありがとう。

4

3 に答える 3

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

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

おそらく最もクリーンな方法は、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 に答える