如何在C#中向PrintPreviewDialog添加一个新按钮?

时间:2009-10-08 13:14:04

标签: c# button printing

我有一个程序,我可以在我的打印文件中切换不同的布局(a4,a5或a6大小的图形图纸等等。打印文档总是a4大小)。我可以在PrintPreviewDialog中显示这个文档,但是我必须在代码之前手动指定我想看的布局。

我想在PrintPreviewDialog工具栏中添加一个新按钮,让我只需在这些不同的布局之间切换。

不要担心按钮的功能,我只是想把它拿到那里并连接到任何方法(我自己会编码)。干杯!

4 个答案:

答案 0 :(得分:2)

嗯,我想我成功了。这是灵感:davidjt52 @ bytes.com

这是我最后编写的代码(当我想在整个程序的其他地方预览我的文档时调用此类):

using System.Reflection; //FieldInfo

public class MyPrintPreviewDialog:PrintPreviewDialog {     私人ToolStripButton myTestButton;

public MyPrintPreviewDialog() : base()
{
    Type T = typeof(PrintPreviewDialog);
    FieldInfo fi = T.GetField("toolStrip1", BindingFlags.Instance | 
    BindingFlags.NonPublic);
    ToolStrip toolStrip1 = (ToolStrip)fi.GetValue(this);

    myTestButton = new ToolStripButton();
    myTestButton.ToolTipText = "TEST";
    myTestButton.ImageIndex = 0;
    myTestButton.Click += new EventHandler(Btn_Click);

    Button Btn = new Button();
    toolStrip1.Items.Add(myTestButton);
}

private void Btn_Click(object Sender, EventArgs args)
{
    MessageBox.Show("Button Clicked");
}

}

感谢您的帮助。 :)

更正:我知道我设法做到了。

答案 1 :(得分:1)

你可以随时制作自己的。使用您想要/需要的任何按钮将PrintPreviewControl添加到表单中。然后将控件上的Document属性设置为您想要的任何可打印对象。

编辑>它的效果非常好btw。我已经这样做了,因为我在表单中添加了一些Microsoft.Ink控件(以允许对预览文档进行签名)。然后我只需要调用ppcDocument.RefreshPreview();

答案 2 :(得分:0)

您是否尝试创建新类并从PrintPreviewDialog继承?

答案 3 :(得分:0)

我再次。

我在网络上看到了一些使用PrintPreviewControl的“精心设计”的代码片段。几百行代码或更多。

他们也都使用Form。我不希望这样。我知道PrintPreviewDialog在某种程度上使用它,但我不想实际拥有一个Form文件或在Form主体中写入我的代码。

对于我来说,继承PrintPreviewDialog或设置一个PrintPreviewControl,让我在不涉及Form主体/文件的情况下添加新按钮,是否有任何快速的方法?