我正在开发一个C# / .net应用程序。我希望用户能够打印预览,但我不希望用户能够直接从预览对话框中打印。
打印预览对话框上有一个小打印机按钮,可将预览的页面直接发送到打印机。问题是,有没有一种方法可以消除/禁用/拦截这个按钮点击?
发布于 2010-09-23 04:32:15
PrintPreviewDialog类实际上是PrintPreviewControl类的包装器,它提供了工具栏中的按钮。任何表单都可以托管PrintPreviewControl,因此您需要做的就是在您创建的对话框表单中托管PrintPreviewControl:
public partial class PreviewDialog : Form
{
public PreviewDialog() {
this.printPreviewControl1 = new System.Windows.Forms.PrintPreviewControl();
this.SuspendLayout();
//
// printPreviewControl1
//
this.printPreviewControl1.Dock = System.Windows.Forms.DockStyle.Fill;
this.printPreviewControl1.Location = new System.Drawing.Point(0, 0);
this.printPreviewControl1.Name = "printPreviewControl1";
this.printPreviewControl1.Size = new System.Drawing.Size(292, 273);
this.printPreviewControl1.TabIndex = 0;
this.printPreviewControl1.Columns = 1;
this.printPreviewControl1.Zoom = 1.0;
}
}Columns属性当前设置为1,是控件在屏幕上水平显示的页数。Zoom属性设置页面的比例,1.0表示整页;因此< 1.0表示缩小图像,> 1.0表示每页控件中的展开图像。您希望对上面的PreviewDialog类执行的操作是向其添加一个System.Windows.Forms.ToolStrip,然后添加按钮来处理缩放,并根据所提到的属性(列和缩放)添加页面。
在将打开预览的表单(而不是PreviewDialog表单)中,您将拥有如下代码:
private void buttonPrintPreview_Click(object sender, EventArgs e) {
PreviewDialog dlg = new PreviewDialog();
dlg.ShowDialog();
return;
}希望这能有所帮助
发布于 2011-02-18 23:15:01
通过在容器的controls集合中进行搜索,可以访问打印按钮以及打印预览控件中的任何其他按钮。
对于打印按钮:
(ToolStripButton)((ToolStrip)printPreviewDialog1.Controls[1]).Items[0]所以,要禁用它,
((ToolStripButton)((ToolStrip)printPreviewDialog1.Controls[1]).Items[0]).Enabled = false;发布于 2014-05-03 02:19:18
感谢你们所有人的这个帖子。我只想分享另一种基于Ion Roata上面的答案的方法。使用自定义PrintPreviewDialog类覆盖基类。使JMHO代码看起来更整洁。
class customPrintPreviewDialog : PrintPreviewDialog
{
public customPrintPreviewDialog() //default constructor
{
// over ride the print button default enabled property
((ToolStripButton)((ToolStrip)this.Controls[1]).Items[0]).Enabled = false;
}
// Add more of your customization here.
}实例化的代码。
customPrintPreviewDialog objCPPdialog = new customPrintPreviewDialog();https://stackoverflow.com/questions/3772776
复制相似问题