2015-04-03 143 views
2

这是代码将在打印预览中添加保存工具提示,并将图片框保存为PDF格式。无法通过嵌套类型访问外部类型的非静态成员

class SavePrint : System.Windows.Forms.PrintPreviewDialog 
     { 
      public SavePrint() 
       : base() 
      { 
       if (this.Controls.ContainsKey("toolstrip1")) 
       { 

        ToolStrip tStrip1 = (ToolStrip)this.Controls["toolstrip1"]; 
        ToolStripButton button1 = new ToolStripButton(); 
        button1.Text = "Save"; 

        button1.Click += new EventHandler(SaveDocument); 
        button1.Visible = true; 
        tStrip1.Items.Add(button1); 


       } 
      } 

      public void SaveDocument(object sender, EventArgs e) 
      { 
       SaveFileDialog sfd = new SaveFileDialog(); 
       sfd.Title = "Save As PDF"; 
       sfd.Filter = "PDF|*.pdf"; 
       sfd.InitialDirectory = @"Desktop"; 

       if (sfd.ShowDialog() == DialogResult.OK) 
       { 
        Bitmap bmp = new Bitmap(pictureBox.Image);//GETTING THE ERROR HERE 
        Graphics gr = Graphics.FromImage(bmp); 

        PdfDocument doc = new PdfDocument(); 
        doc.Pages.Add(new PdfPage()); 
        XGraphics xgr = XGraphics.FromPdfPage(doc.Pages[0]); 

        xgr.DrawImage(bmp, 0, 0); 
        doc.Save(sfd.FileName); 
        doc.Close(); 
       } 
      } 
     } 

即时得到错误,在这条线“的BMP位图=新位图(pictureBox.Image)”我应该怎么做,因此它可以继承我的PictureBox?

+0

您可能想要发布错误或异常详细信息,以便有人可以提供一些帮助。你可能想检查pictureBox.Image是否为空。 – faljbour 2015-04-04 00:00:34

+0

哪里是pictureBox定义? – kskyriacou 2015-04-04 00:08:17

+0

它位于公共部分类Form1中:Form – 2015-04-04 00:09:02

回答

1

更改您的SavePrint类的构造函数有以下特征:

class SavePrint : System.Windows.Forms.PrintPreviewDialog 
    { 
     readonly Form1 parent; 
     public SavePrint(Form1 parent) 
      : base() 
     { 
      this.parent = parent; 

      // Remainder as before 
     } 
    } 

然后,当你建立你的SavePrint,通过相应的实例Form1到构造函数。

  SavePrint savePrint = new SavePrint(this); 

已经这样做了,你SavePrint将能够访问其字段和属性:

​​

顺便说一句,你应该换你所有的disposablesusing语句,就像这样:

  using (Bitmap bmp = new Bitmap(parent.pictureBox.Image)) 
      using (Graphics gr = Graphics.FromImage(bmp)) 
      { 
      } 
+0

谢谢!好东西.. – 2015-04-04 00:25:16

+0

@KevinRodriguez - 很乐意帮忙。 – dbc 2015-04-04 00:25:25

+0

如果没有包装,效果如何? – 2015-04-04 00:26:15

相关问题