从另一个表单访问PictureBox C#

时间:2015-10-28 17:42:40

标签: c# .net winforms printing picturebox

我正在使用WinForms。我有2个表格。在form1我有一个图片框,在form2我有一个打印按钮。我正在尝试构建一个应用程序,它将使用Form2从Form1中的图片框中打印图像。

我首先尝试制作一个面板并测试图片是否会以form1打印,但确实如此,但问题是将打印代码复制到form2时,代码不允许我访问form1中的图片框。

如何从Form2访问Form1中的图片框,因此我无法在图片框中打印图像。

我在this.pictureBox1下收到错误行。

窗体2

    private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
    {
       var bmp = new Bitmap(this.pictureBox1.Width, this.pictureBox1.Height);
       this.pictureBox1.DrawToBitmap(bmp, this.pictureBox1.ClientRectangle);
       e.Graphics.DrawImage(bmp, 25, 25, 800, 1050);
    }

2 个答案:

答案 0 :(得分:2)

您可以通过将作为属性的引用传递给Form2,使Form2中的PictureBox可用。

我不确定您是如何设置表单进行加载的。但是,如果您使用管理Form1和Form2的Main表单,则可以执行以下操作。如果您没有主表格,那么至少应该让您走上正确的轨道。

<强> Form1中

public PictureBox ThePicture
{
    get {return this.pictureBox1; }
}

<强>窗体2

private PictureBox _thePicture;
public PictureBox ThePicture
{
    set { this._thePicture = value; }
    get { return this._thePicture; }
}

private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
   if (this.ThePicture != null)
   {
       var bmp = new Bitmap(this.ThePicture.Width, this.ThePicture.Height);
       this.ThePicture.DrawToBitmap(bmp, this.ThePicture.ClientRectangle);
       e.Graphics.DrawImage(bmp, 25, 25, 800, 1050);
   }
}

主要表格

Form1 form1 = new Form1();
Form2 form2 = new Form2();
form2.ThePicture = form1.ThePicture;

答案 1 :(得分:0)

尝试这样做:

//Tente fazer assim:
public Form1()
    {
        InitializeComponent();
    }

    public Image getImagePic
    {
        get 
        {
            return this.pictureBox1.Image;
        }

    }