关闭AutoSize时保持大小

时间:2012-12-20 11:11:04

标签: .net winforms autosize sizing

我有一个表单,通过将UserControl设置为true并将AutoSize设置为AutoSizeMode,将表单初始化为其内容(GrowAndShrink放置在位置0,0)。

初始化之后,我希望表单获得控制权并关闭AutoSizing并进行UserControl Dock.Fill

问题在于,当关闭AutoSize时,表单会重新恢复其先前的大小,而不是保持其当前大小。 我可以在关闭AutoSize之前存储大小,然后恢复它,但你仍然可以获得大小调整事件(你可以看到表单闪烁)。

有没有办法让表单保持当前大小,并且在关闭AutoSize时没有触发任何大小调整事件?

2 个答案:

答案 0 :(得分:4)

在关闭AutoSize属性之前,请尝试设置表单的MinimumSize属性:

this.MinimumSize = this.Size;
this.AutoSize = false;

答案 1 :(得分:0)

我遇到了类似的问题 - 我希望在按下按钮时使用AutoSize增大或缩小表单,然后返回以允许用户手动调整大小。

目前我的解决方案是在按钮事件中:

    Me.AutoSize = True
    uiStopAutoSizeTimer.Start()

然后有一个单独的方法来关闭AutoSize,并保持AutoSize在表单上使用的大小。

Private Sub uiStopAutoSizeTimer_Tick(sender As System.Object, e As System.EventArgs) Handles uiStopAutoSizeTimer.Tick
    Me.SuspendLayout()
    Dim tempSize = Me.Size
    Me.AutoSize = False
    Me.Size = tempSize
    uiStopAutoSizeTimer.Enabled = False
    Me.ResumeLayout()
End Sub

它有效,但它只是感觉笨重。