我想从 Form2(文本框,图片框)控制 Form1
I would like to control Form1 from Form2 (textbox,picturebox)
我想使用 Form2 中的 textbox1、textbox2 和按钮调整 Form1 (picturebox1) 中图片框的大小。
首先我在 Form1.Designer.cs 中做了这个:
public System.Windows.Forms.PictureBox picturebox1;
在此之后 Form2.cs(提交按钮):
private void button1_Click(object sender, EventArgs e)
{
Form1 frm1 = new Form1();
int height = int.Parse(textbox1.Text);
frm1.picturebox1.Height = height;
int width = int.Parse(textbox2.Text);
frm1.picturebox1.Width = width;
}
但这不会改变 picturebox1 的大小...
这是你的问题:
Form1 frm1 = new Form1();
您正在创建 Form1
的 new 实例。因此,您已成功修改该新实例的值,但未对已有实例执行任何操作。
Form2
需要对 现有 实例的引用,而不是创建新实例。例如,您可以在其构造函数中将该实例提供给 Form2
。像这样:
private Form1 Form1Instance { get; set; }
public Form2(Form1 form1Instance)
{
this.Form1Instance = form1Instance;
}
然后当您从 Form1
创建 Form2
的实例时,您将提供它所需的引用:
var form2 = new Form2(this);
form2.Show();
然后 Form2
中的任何代码都可以作用于 Form1
的那个实例。像这样:
private void button1_Click(object sender, EventArgs e)
{
int height = int.Parse(textbox1.Text);
this.Form1Instance.picturebox1.Height = height;
int width = int.Parse(textbox2.Text);
this.Form1Instance.picturebox1.Width = width;
}
我想使用 Form2 中的 textbox1、textbox2 和按钮调整 Form1 (picturebox1) 中图片框的大小。
首先我在 Form1.Designer.cs 中做了这个:
public System.Windows.Forms.PictureBox picturebox1;
在此之后 Form2.cs(提交按钮):
private void button1_Click(object sender, EventArgs e)
{
Form1 frm1 = new Form1();
int height = int.Parse(textbox1.Text);
frm1.picturebox1.Height = height;
int width = int.Parse(textbox2.Text);
frm1.picturebox1.Width = width;
}
但这不会改变 picturebox1 的大小...
这是你的问题:
Form1 frm1 = new Form1();
您正在创建 Form1
的 new 实例。因此,您已成功修改该新实例的值,但未对已有实例执行任何操作。
Form2
需要对 现有 实例的引用,而不是创建新实例。例如,您可以在其构造函数中将该实例提供给 Form2
。像这样:
private Form1 Form1Instance { get; set; }
public Form2(Form1 form1Instance)
{
this.Form1Instance = form1Instance;
}
然后当您从 Form1
创建 Form2
的实例时,您将提供它所需的引用:
var form2 = new Form2(this);
form2.Show();
然后 Form2
中的任何代码都可以作用于 Form1
的那个实例。像这样:
private void button1_Click(object sender, EventArgs e)
{
int height = int.Parse(textbox1.Text);
this.Form1Instance.picturebox1.Height = height;
int width = int.Parse(textbox2.Text);
this.Form1Instance.picturebox1.Width = width;
}