2016-03-28 295 views
0

我想在PdfViewer DevExpress中保護PDF,防止用戶打印,保存爲和用戶只能查看。我創建了簡單的項目並運行良好,但當用戶按Ctrl + P時,用戶仍然可以打印該文件。任何建議來解決這個問題?在Pdf Viewer中禁用控制打印(Ctrl + P)Devexpress Winform

這是我重視,我不希望用戶顯示這個圖片的,當用戶按下按Ctrl + P他們將尋找這個PDF文檔保護:

Print

我嘗試這個代碼Key_Down事件PdfViewer

private void pdfViewer1_KeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.Control && e.KeyCode == Keys.P) //detect key ctrl+p 
    { 
     e.Handled = false; 
     MessageBox.Show("This Document is Protected !", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information); 
     return; 
    } 
    base.OnKeyDown(e); 
} 

它不工作。

+0

'如果((e.Control && e.KeyCode == Keys.C)||(e.Control && e.KeyCode == Keys.A)){ '你的意思這個? – MichaelMao

+0

@MichaelMao所以對不起,我已經更新了我的解釋 – aminvincent

回答

1

如果您想阻止您的PdfViewer接收Ctrl + P那麼您必須使用KeyEventArgs.SuppressKeyPress屬性。 這裏是例子:

private void pdfViewer1_KeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.Control && e.KeyCode == Keys.P) //detect key ctrl+p 
    { 
     e.SuppressKeyPress = true; //<= Set it to true. 
     MessageBox.Show("This Document is Protected !", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information); 
     return; 
    }   
} 
+0

你上面的代碼是不行的,我測試過它並且打印對話框仍然顯示時按ctrl + p ...任何其他方式? – aminvincent

+0

@aminvincent我也測試過了。它在我身邊運作。看起來'Ctrl + P'由窗體中的另一個控件處理。例如,可以在其上帶有「打印」按鈕的「Ribbon」或「Panel」。如果是這樣,你需要從它刪除'打印'按鈕。 – nempoBu4

+0

正是我從blob數據oracle讀取pdf文件並使用'MemoryStream'讀取它。我已刪除我的按鈕打印,打開,並從我的功能區面板保存。我再次測試,它不工作。也許這是因爲'MemoryStream'? – aminvincent