c# MDI窗体的BUG? 怎么解决? 请进入看看
c# MDI窗体的BUG? 如何解决? 请进入看看
建立两个窗体:
FORM1 (IsMdiContainer=True, WindowState=Maximized)
FORM2 (WindowState=Maximized; size=(100,100))
FORM2中添加一个button1
FORM1_Load()
{
FORM2 F=new FORM2();
F.MdiParrent=this; //这里以MDI子窗体的形式载入FORM2
F.Show();
}
Form2_Load()
{
MessageBox.Show(this.Width.ToString()); //这里输出的是100
}
button1_Click()
{
MessageBox.Show(this.Width.ToString()); //窗体载入完成后输出的值正确
}
结论:
如果FORM2 是MDI子窗体的话,貌似先执行FORM2_LOAD()再改变窗体尺寸,在LOAD事件中就无法获取到FORM2窗体的实际大小。即使是RESIZE()事件也无法获取到正确尺寸
------解决思路----------------------
在SHOWN事件里获取
建立两个窗体:
FORM1 (IsMdiContainer=True, WindowState=Maximized)
FORM2 (WindowState=Maximized; size=(100,100))
FORM2中添加一个button1
FORM1_Load()
{
FORM2 F=new FORM2();
F.MdiParrent=this; //这里以MDI子窗体的形式载入FORM2
F.Show();
}
Form2_Load()
{
MessageBox.Show(this.Width.ToString()); //这里输出的是100
}
button1_Click()
{
MessageBox.Show(this.Width.ToString()); //窗体载入完成后输出的值正确
}
结论:
如果FORM2 是MDI子窗体的话,貌似先执行FORM2_LOAD()再改变窗体尺寸,在LOAD事件中就无法获取到FORM2窗体的实际大小。即使是RESIZE()事件也无法获取到正确尺寸
------解决思路----------------------
在SHOWN事件里获取