如何从其他窗体调整窗口窗体的大小
本文关键字:窗体 窗口 调整 其他 | 更新日期: 2023-09-27 18:24:10
我有两个windows窗体。第一个(marquee)是默认的,在运行解决方案时运行,另一个是这样调用的:
config configForm = new config();
configForm.Show();
我在configForm上有一个名为txtWidthan的文本框组件,还有一个叫txtHeight的。我还有一个按钮"应用"。在字幕形式中,我得到了一个函数:
public void ApplySettings()
{
int width = Convert.ToInt32(configForm.txtWidth.Text);
int height = Convert.ToInt32(configForm.txtHeight.Text);
if (width > 0 && height > 0) { this.Size = new Size(width, height); }
}
我不知道如何从configForm调用那个方法。如果我创建一个新的marquee窗体并使用marqueeNew.ApplySettings(),则宽度结果为0,并出现错误。
如何将属性从configForm更改为marqueForm?我可以用相反的方法做,但那对我没有帮助!
将此方法与get; set;
属性一起放入新的class
中。
类似于:
public class MyClassName
{
public int Height {get; set;}
public int Width {get; set;}
}
启动后,在form1.load事件上,使用MyClassName.Height = this.Height;
设置这些值
然后,在第二个表单的load事件中,设置该值。
this.Height = MyClassName.Height
否则,手动设置它们,并将边界设置为无(因此用户无法调整大小)
最简单的方法是在带有Width和Height参数的字幕窗体上创建一个PUBLIC方法。这样,您就可以在没有控件引用或获取额外属性的情况下传入这些控件。
*更新-通过在子窗体上添加公共属性,可以在子窗体中创建对主窗体的引用。这样可以避免两种窗体中所有者/父级关系的任何副作用。
例如,在您的configForm中:(MarqueForm是您的marquee表单类的类型)
公共MarqueForm{get;set;}
就在您的configForm.Show();之前;,添加:configForm.MarqueeForm=此;
在您的configForm中,您应该能够引用属性MarqueForm.ApplySettings(X,Y);
我没有完整的可用代码,所以您可能会遇到一些数据类型问题,但这应该会为您指明正确的方向。
public void ApplySettings(int Height, int Width)
{
if (Width > 0 && Height > 0) { this.Size = new Size(Width, Height); }
}
myForm.ApplySettings(100,200);
public static class Forms
{
public Marquee marqueeForm;
}
然后,当您创建新表单时,您可以执行以下操作:
...
Forms.marqueeForm = new Marquee(...);
...
然后,从您的配置中,您可以执行以下
Forms.marqueeForm.ApplySettings(this.txtWidth.Text, this.txtHeight.Text);
单击应用按钮后。或者,更直接地,在配置表单上单击"应用"可以直接修改marqueForm的尺寸。只需将ApplySettings()
方法更改为ApplySettings(string widthStr, string heightStr)
或类似的方法即可。