如何从其他窗体调整窗口窗体的大小

本文关键字:窗体 窗口 调整 其他 | 更新日期: 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)或类似的方法即可。