微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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()).

原文地址:https://www.jb51.cc/csharp/101163.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐