gpt4 book ai didi

c# - 调整窗口大小时锚定控件不会调整大小(56k 小心)

转载 作者:太空狗 更新时间:2023-10-29 20:06:11 27 4
gpt4 key购买 nike

这个真的让我很反感。我有一个表单,由应用程序的主要表单生成并拥有,用于搜索记录。表单布局在停靠的 TableLayoutPanel 中,结合了绝对和百分比大小的行/列,以便我的标签在数据输入和结果控件增长时保持相同的大小。我们谈论的是总共 20 个控件。

问题是,虽然 TableLayoutPanel 是填充停靠的,并且所有子控件也是填充停靠的,但是当我捕获窗口边缘并拖动时,窗体内部没有任何调整大小。设计器中的一切都可以很好地调整大小,但在实际的应用程序中则不然。

我确实使用了我的 Google-fu,找到了 this SO question这让我想到了this MSKB article .我使用线程调用创建了一个派生的 FlowLayoutPanel 和一个派生的 TableLayoutPanel 并将它们放入,但它仍然无法正常工作。这是发生这种情况的唯一窗体,另一种窗体也有一些相当深的嵌套(它使用 TabControl 和 TableLayoutPanel 来布局数据输入控件,但没有 RB)。

其他相关信息:

  • 没有设置 MaxSize 属性。
  • 除默认的左上角外,此表单中没有任何锚定;几乎所有东西都已停靠在其容器中。但是,包含搜索结果表的子用户控件是使用锚定在内部布局的;在我使用这些控件的另一种形式中,这不是问题,我将它们填充停靠到 SplitPanel(嵌套两层,不少)。
  • RadioButtons 和 Labels 被设置为 AutoSize,但没有其他设置。这似乎是这些控件的默认行为,即使这些值在设计器中以粗体显示,并且与其他适当调整大小的窗口的设置相匹配。
  • 为表单触发调整大小事件,但不为 TLP 触发。
  • 当 TLP 锚定到窗口而不是停靠时,行为不会改变(永远不会同时出现)。

我在这里撕扯我的头发。帮助!

编辑:以下是一些显示设计器和应用内布局行为的请求图片:

alt text alt text alt text alt text

以“Nested”开头的控件直接派生自内置面板控件,它们唯一的变化是重写 OnSizeChanged() 以异步调用基本方法(知识库文章中的变通方法)。正如我之前所说,它也不适用于内置面板。正如您从最后两个窗口中看到的那样,即使 mainLayout TLP 停靠在设计器中的窗口中,它也不会增长。

最佳答案

史诗般的捂脸。

在此表单(用户代码端)的构造函数中,我调用了 SuspendLayout() 来执行一些可能影响布局的额外设置。猜猜我完成后没有调用什么。

如果您调用 SuspendLayout 来执行您自己的自定义布局更改,请始终确保调用 ResumeLayout(true)(或 ResumeLayout(false),然后是 PerformLayout ()) 完成后。

关于c# - 调整窗口大小时锚定控件不会调整大小(56k 小心),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4166545/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com