2016-03-28 36 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

相关问题