首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在.net打印预览对话框中禁用“打印”按钮

在.net打印预览对话框中禁用“打印”按钮
EN

Stack Overflow用户
提问于 2010-09-23 03:11:09
回答 5查看 13.3K关注 0票数 5

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

打印预览对话框上有一个小打印机按钮,可将预览的页面直接发送到打印机。问题是,有没有一种方法可以消除/禁用/拦截这个按钮点击?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-09-23 04:32:15

PrintPreviewDialog类实际上是PrintPreviewControl类的包装器,它提供了工具栏中的按钮。任何表单都可以托管PrintPreviewControl,因此您需要做的就是在您创建的对话框表单中托管PrintPreviewControl:

代码语言:javascript
复制
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表单)中,您将拥有如下代码:

代码语言:javascript
复制
    private void buttonPrintPreview_Click(object sender, EventArgs e) {
        PreviewDialog dlg = new PreviewDialog();
        dlg.ShowDialog();
        return;
    }

希望这能有所帮助

票数 3
EN

Stack Overflow用户

发布于 2011-02-18 23:15:01

通过在容器的controls集合中进行搜索,可以访问打印按钮以及打印预览控件中的任何其他按钮。

对于打印按钮:

代码语言:javascript
复制
(ToolStripButton)((ToolStrip)printPreviewDialog1.Controls[1]).Items[0]

所以,要禁用它,

代码语言:javascript
复制
((ToolStripButton)((ToolStrip)printPreviewDialog1.Controls[1]).Items[0]).Enabled = false;
票数 14
EN

Stack Overflow用户

发布于 2014-05-03 02:19:18

感谢你们所有人的这个帖子。我只想分享另一种基于Ion Roata上面的答案的方法。使用自定义PrintPreviewDialog类覆盖基类。使JMHO代码看起来更整洁。

代码语言:javascript
复制
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.

}

实例化的代码。

代码语言:javascript
复制
 customPrintPreviewDialog objCPPdialog = new customPrintPreviewDialog();
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3772776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档