【发布时间】:2018-10-07 20:58:41
【问题描述】:
我有两个不同形式的图片框。
- Form1:第一个图片框
- form2:图片框1
我想把firstpicturebox的图片传到picturebox1。
那么,任何人都可以提供帮助并提供解决方案。
【问题讨论】:
我有两个不同形式的图片框。
我想把firstpicturebox的图片传到picturebox1。
那么,任何人都可以提供帮助并提供解决方案。
【问题讨论】:
您可以使用 Form2 构造函数发送它
试试这个:
Form1:
Form2 form2 = null;
private void button1_Click(object sender, EventArgs e)
{
form2 = new Form2(pictureBox1.Image);
form2.Show();
}
表格 2:
public Form2(Image pic1)
{
InitializeComponent();
pictureBox1.Image = pic1;
}
【讨论】:
你真的是在问两个问题:
1 - 如何将一个 PictureBox 的内容放入另一个 PictureBox?
2 - 如何从另一个表单访问一个表单的控件等?
问题1很简单:pictureBox1.Image = pictureBox2.Image;
问题 2 的答案也不难,但是有很多方法可以做到这一点,选择一种可能取决于您还想用这两种形式做什么。
基本的方法始终是获取对其他表单的有效引用。
这是一个通用的方法:
什么是正确的时刻?假设 form1 是在程序启动时创建的,而 form2 是通过 form1 中的某些操作创建的,您可以在创建并显示它时获得对 form2 的引用:
form2 = new Form2(this);
form2.Show();
这可能发生在按钮单击中,甚至可能发生在 form1 的加载事件中。
请注意,我已经在构造函数中传递了对this 的引用!这是将对 form1 的引用传递给新表单的好方法。因此,form2 中的构造函数应如下所示:
public Form2(Form1 form1_)
{
InitializeComponent();
form1 = form1_;
}
最后一步是公开您需要访问的控件。转到 Designer.cs 文件并从
更改声明private System.Windows.Forms.PictureBox pictureBox1;
到
public System.Windows.Forms.PictureBox pictureBox1;
完成。
或者...
如果您有许多表单都需要访问一个 PictureBox,您也可以尝试以下操作:在 programm.cs 文件中声明对它的静态全局引用,如下所示:
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
public static PictureBox thePictureBox;
然后在form1中填写引用
Program.thePictureBox = pictureBox1;
现在您也可以以所有其他形式引用它:
myNextPictureBox42.Image = Program.thePictureBox.Image;
【讨论】: