在.net打印预览对话框中禁用"打印"按钮

Mat*_*del 5 .net c# printing

我正在开发一个C#/ .net应用程序.我希望用户能够打印预览,但我不希望用户能够从预览对话框中直接打印.

打印预览对话框上有一个小打印机按钮,可将预览页面直接发送到打印机.问题是,有没有办法摆脱/禁用/拦截这个按钮点击?

小智 12

您可以通过在容器的控件集合中搜索来访问打印按钮以及打印预览控件中的任何其他按钮.

对于打印按钮:

(ToolStripButton)((ToolStrip)printPreviewDialog1.Controls[1]).Items[0]
Run Code Online (Sandbox Code Playgroud)

所以,要禁用它,

((ToolStripButton)((ToolStrip)printPreviewDialog1.Controls[1]).Items[0]).Enabled = false;
Run Code Online (Sandbox Code Playgroud)


Ste*_*ger 3

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;
    }

}
Run Code Online (Sandbox Code Playgroud)

当前设置为 1 的 Columns 属性是控件在屏幕上水平显示的页数。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;
    }
Run Code Online (Sandbox Code Playgroud)

希望这有帮助