c# – 调整窗口大小时锚定控件不会调整大小(56k注意)

这个真的踢我的背后.我有一个表单,由应用程序的主要形式生成并拥有,用于搜索记录.表单放在一个停靠的TableLayoutPanel中,结合了Absolute和Percentage大小的行/列,这样我的标签在数据输入和结果控件增长时保持相同的大小.我们谈论的是20个控件.

问题是,虽然TableLayoutPanel是填充对接的,并且所有子控件也都是填充对接的,但当我抓住窗口边缘并拖动时,表单内部没有任何大小调整大小.一切都在设计师中调整得很好,但在实际应用中却没有.

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

其他相关信息:

>没有设置MaxSize属性.
>除了认的左上角之外,这种形式没有任何内容;几乎所有东西都填充到它的容器中.但是,包含搜索结果表的子用户控件使用锚定在内部布局;这在我使用这些控件的其他形式中并不是问题,我将它们填充到splitpanels(嵌套两个深,不少).
> RadioButtons和Labels设置为AutoSize,但没有别的.这似乎是这些控件的认行为,即使这些值在Designer中以粗体显示,并且与正确调整大小的其他窗口的设置相匹配.
>为表单触发调整大小事件,但不激活TLP.
>当TLP锚定到正在停靠的窗口INSTEAD时,行为不会改变(它不会同时出现).

在这里撕扯我的头发.救命!

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

以“嵌套”开头的控件直接从内置面板控件派生,它们唯一的更改是重写OnSizeChanged()以异步调用基本方法(KB文章中的解决方法).如前所述,它也不适用于内置面板.从最后两个窗口可以看出,mainLayout TLP即使停靠在设计器的窗口中也不会增长.

解决方法

史诗Facepalm.

在这种形式的构造函数(用户代码端)中,我调用SuspendLayout()来执行一些可能影响布局的附加设置.猜猜完成后我没有打电话.

如果您调用SuspendLayout进行自己的自定义布局更改,请务必在完成后调用ResumeLayout(true)(或ResumeLayout(false),然后调用Performlayout()).

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...