有没有办法找到一个使用AutoSize = true调整自身大小的表单的实际大小?

时间:2016-05-29 15:32:23

标签: c# .net winforms visual-studio

有没有办法找到使用AutoSize=true调整自身大小的表单的实际大小?

例如,我有一个在运行时创建控制器的表单,我希望将某些控制器放在相对于表单大小的某些位置。

当我尝试从表单This.WidthThis.RightThis.PreferredSize.Width获取时,它们会返回太大的值,因此我怀疑表单的默认大小是AutoSize无法触及。

有没有办法强制AutoSize更新表单的当前大小?

1 个答案:

答案 0 :(得分:3)

WidthHeightSize将始终返回表单的“实际”尺寸。但是,您可以订阅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