2012-11-06 80 views
2

似乎無法在webBrowser控件中禁用打印。在webBrowser控件中禁用Ctrl + P

這是我已經試過:

  • 設置WebBrowserShortcutsEnabled爲FALSE

    • 這仍然顯示的打印對話框按下Ctrl + P鍵時。行爲似乎很奇怪,但是從我的測試中,您可以在Web瀏覽器控件仍然有焦點時觸發對話框。如果您單擊另一個控件以使瀏覽器失去焦點,並再次單擊webbrowser,則無法觸發打印對話框。
  • 在窗體的KeyDown事件重寫按Ctrl + P

    • 這似乎並沒有做任何事情。
  • 使用Web瀏覽器的PreviewKeyDown

    • 這似乎並不意在攔截按鍵,僅僅是預覽它們,你不能用它抵消按鍵。

如果所有的鍵盤快捷鍵被禁用這將是最佳的。

必須有一些方法來實現這一點?謝謝。

回答

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/

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> 
+0

這是一個有趣的解決方案 - 謝謝。不過,我的客戶更喜歡打印對話框根本不顯示。 –

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事件的文檔:

相關問題