【问题标题】:Forcing WinForms AutoResize to happen强制 WinForms AutoResize 发生
【发布时间】:2010-12-19 12:16:22
【问题描述】:

我在 Windows 窗体中有以下结构:

Form (AutoResize = true, AutoSizeMode = GrowAndShrink)
    FlowLayout (AutoResize = true, AutoSizeMode = GrowAndShrink)
        GroupBox
        GroupBox
        GroupBox
    StatusStrip

我的期望是更改 GroupBoxes 的可见性应该导致窗口捕捉到新的大小以回收空白空间或容纳新的控件。但是,这不会自动发生。如果我最小化到托盘然后恢复表单(即切换 Visible、ShowInTaskbar、WindowState = Normal/Minimized),那么当它重新出现时,它将正确更新。触发它的另一件事是更新页面底部的 StatusStrip 中的内容(显示标签、更改进度条等)。我已经尝试过各种受巫术启发的 Invalidate/Update/OnResize 等组合,但我觉得我遗漏了一些更基本的东西,希望有人能看到我所描述的明显缺陷。

我对表单上小部件的所有更新都在 InvokeRequired/Invoke 中,如果相关的话。

【问题讨论】:

    标签: .net winforms autoresize


    【解决方案1】:

    我无法通过使用您的布局和属性设置的简单测试表单来重现此问题。窗体的客户区在启动时会缩小,并在我将其 Visible 属性设置为 true 时根据需要增大以使组框可见。

    您可以使用 PerformLayout() 方法请求显式重新计算布局。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-15
      • 2018-05-05
      • 2012-02-15
      • 2013-07-15
      • 2013-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多