我正在同时运行两个表单,并且我尝试通过Form1
中的事件调用Form1
方法来调整Form2
的大小。使用以下代码,控制台中将显示正确的大小值,但Form1
的大小不会更改。我尝试了很多方法,但我不知道为什么这不起作用。
在Form1中:
public void ResizeForm()
{
Console.WriteLine(this.Size.ToString());
this.Size = new System.Drawing.Size(600, 300);
}
在Form2中:
private void ResizeCheckbox_CheckedChanged(object sender, EventArgs e)
{
Form1 form = new Form1();
form.ResizeForm();
}
答案 0 :(得分:1)
Form1 form = new Form1();
创建一个新表单,调整其大小,然后忘记它。所以,这完全没有意义。 ResizeForm()
方法确实被调用,但是在Form1
的错误实例上。根据您的描述,您应该在某处实现Form1
的其他实例,即您实际向用户显示的实例。您需要从Form2
内访问该实例。如果您无法从Form1
内访问Form2
的正确实例,则必须以某种方式传递它,以便Form2
拥有它。创建Form1
的新实例不会调整Form1
的原始实例的大小。
答案 1 :(得分:1)
您应该将当前Form1
的实例传递给第二个表单。在Form2
中添加一个实例,然后从Form1
窗体2
Form1 _form1;
public Form2(Form1 form1)
{
InitializeComponent();
_form1 = form1;
}
private void ResizeCheckbox_CheckedChanged(object sender, EventArgs e)
{
_form1.ResizeForm();
}
然后在主窗体中打开Form2
。
Form2 form2 = new Form2();
form2.Show((Form1)this); //I'm not sure if you need to cast "this" to From1