有没有办法找到使用AutoSize=true
调整自身大小的表单的实际大小?
例如,我有一个在运行时创建控制器的表单,我希望将某些控制器放在相对于表单大小的某些位置。
当我尝试从表单This.Width
或This.Right
或This.PreferredSize.Width
获取时,它们会返回太大的值,因此我怀疑表单的默认大小是AutoSize
无法触及。
有没有办法强制AutoSize
更新表单的当前大小?
答案 0 :(得分:3)
Width
,Height
和Size
将始终返回表单的“实际”尺寸。但是,您可以订阅SizeChanged
事件以通知任何更改,例如:
public Form1()
{
this.SizeChanged += Form1_SizeChanged;
InitializeComponent();
}
private void Form1_SizeChanged(object sender, EventArgs e)
{
Debug.WriteLine(this.Width + "/" + this.Height);
}
或者,如果您只需要一次(在AutoSize之后),则可以改为使用Load
事件:
public Form1()
{
this.Load += Form1_Load;
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
Debug.WriteLine(this.Width + "/" + this.Height);
}
更多信息:
Order of Events in Windows Forms
Form.Load Event
Control.SizeChanged Event