如何通过其子项更改 Windows 表单中的父项大小?
How to change parent size in Windows forms by its child?
在我的父表单中,我有这个命令,我将子表单添加到我的主表单中:
AddChildForm(new Form2());
在我的 Form2 中有一个复选框,每次选中该复选框时,我都必须更改我的主窗体大小,但我无法完成这项工作,只能创建一个新窗体,就像这样:
Form1 main = new Form1();
main.Size = new System.Drawing.Size(482, 370);
main.ShowDialog();
如果您不想要新的 Form1
,请不要创建它。
您可能需要 参考 真正的主窗体。这应该在打开它期间或之后的某个时间设置,但由于您向我们展示的只是 4 条上下文之外的行,我们无法确定。.
而且由于我们没有看到 AddChildForm
代码,因此更难猜测。
但是,您应该将引用从 opening 表单传递到 opened 表单,如下所示:
AddChildForm(new Form2(this)); // <--- pass in reference to the opening form!
并像这样存储它:
Form1 mainForm = null;
public Form2(Form1 form1) // here we receive the main form reference
{
InitializeComponent();
mainForm = form1; // here we store it in a class level variable
//..
}
现在可以设置其他表格尺寸:
mainForm.Size = new System.Drawing.Size(482, 370);
当然,如果需要的话,您还应该保留对在主窗体中打开的窗体的引用。为此,请改用这样的东西:
Form2 form2 = new Form2(this);
..
AddChildForm( form2);
在我的父表单中,我有这个命令,我将子表单添加到我的主表单中:
AddChildForm(new Form2());
在我的 Form2 中有一个复选框,每次选中该复选框时,我都必须更改我的主窗体大小,但我无法完成这项工作,只能创建一个新窗体,就像这样:
Form1 main = new Form1();
main.Size = new System.Drawing.Size(482, 370);
main.ShowDialog();
如果您不想要新的 Form1
,请不要创建它。
您可能需要 参考 真正的主窗体。这应该在打开它期间或之后的某个时间设置,但由于您向我们展示的只是 4 条上下文之外的行,我们无法确定。.
而且由于我们没有看到 AddChildForm
代码,因此更难猜测。
但是,您应该将引用从 opening 表单传递到 opened 表单,如下所示:
AddChildForm(new Form2(this)); // <--- pass in reference to the opening form!
并像这样存储它:
Form1 mainForm = null;
public Form2(Form1 form1) // here we receive the main form reference
{
InitializeComponent();
mainForm = form1; // here we store it in a class level variable
//..
}
现在可以设置其他表格尺寸:
mainForm.Size = new System.Drawing.Size(482, 370);
当然,如果需要的话,您还应该保留对在主窗体中打开的窗体的引用。为此,请改用这样的东西:
Form2 form2 = new Form2(this);
..
AddChildForm( form2);