从另一个 C# 窗体访问 PictureBox

Access PictureBox from Another Form C#

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

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

如何从 Form2 访问 Form1 中的图片框,这样我就无法打印图片框中的图像。

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

Form2

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

您可以通过将对 Form1 的 PictureBox 的引用作为 属性 传递给 Form2,从而使它对 Form2 可用。

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

Form1

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

Form2

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;

尝试这样做:

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

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

    }