如何从另一个窗体调整窗体大小
我有两个窗体窗体。第一个(字幕)是默认的一个,那就是运行解决方案时运行,而另一个被称为是这样的:如何从另一个窗体调整窗体大小
config configForm = new config();
configForm.Show();
我有一个文本框组件上configForm称为txtWidthand另一个叫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该方法。如果我创建一个新的选取框窗体并使用marqueeNew.ApplySettings(),则宽度结果为0,并显示错误。
我该如何将configForm中的属性更改为选取框表单?我可以以相反的方式做到这一点,但这并不能帮助我!
最简单的方法是使用Width和Height参数在您的选取框窗体上创建一个PUBLIC方法。那样的话,你可以在没有控制引用或者获得额外属性的情况下传递它们。
*更新 - 您可以通过在子窗体上添加一个公共属性,在子窗体上创建对主窗体的引用。通过这种方式,您可以在两种形式中避免与所有者/父母关系的任何副作用。
例如,在您的configForm:(MarqueeForm是你margquee窗体类的类型)
公共MarqueeForm {获得;设置;}
就在你的configForm.Show();,之前添加: configForm.MarqueeForm = this;
在你的configForm中,你应该可以引用属性MarqueeForm.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);
将这种方法引入了新的class
,具有get; set;
财产一起。
类似:
public class MyClassName
{
public int Height {get; set;}
public int Width {get; set;}
}
一旦开始了,就form1.load事件,使用MyClassName.Height = this.Height;
然后,在你的第二个窗体的Load事件设置这些值,设定值。
this.Height = MyClassName.Height
否则,
public static class Forms
{
public Marquee marqueeForm;
}
然后,当你创建新的形式,你可以做一些设置为none边框(因此不能由用户调整)手动设置像下面这样:
...
Forms.marqueeForm = new Marquee(...);
...
然后,从你的配置,你可以做以下
Forms.marqueeForm.ApplySettings(this.txtWidth.Text, this.txtHeight.Text);
点击应用按钮后。或者,更直接地,点击配置表单上的“apply”可以直接修改marqueeForm的尺寸。只需将ApplySettings()
方法更改为ApplySettings(string widthStr, string heightStr)
即可。
但是,我如何访问该方法?在选取框中,我创建了配置表单并执行configForm.Show ...它工作。但如果在configForm中创建一个新的选取框表单,我可以按照你所说的做,但它是一个新表单,而不是现有的保证金表单... – 2014-09-24 15:46:37
为什么需要检查表单的高度和宽度是否大于0? – 2014-09-24 15:50:54
@ NinjaMid76我把公共的MarqueeForm {get;设置;}(与正确的类名),我得到和该行的错误。 “无法找到类型或名称空间获取” – 2014-09-24 17:38:30