从另一个 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;
}
}
我正在使用 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;
}
}