关于用户控件中面板的自动调整大小,我遇到了一个奇怪的问题。该面板固定在用户控件的所有 4 个侧面。
但锚定并不总是按其应有的方式起作用:
如果通过调整窗体大小来调整用户控件的大小,则右侧和底部锚点不起作用。但是,如果使用表单中的拆分器调整控件的大小,则它可以正常工作。
所有其他也受调整大小影响的控件都可以正常工作,只有这个面板不行。
我看不出通过拆分器调整大小和通过表单调整大小之间有什么区别。
仅当通过移动拆分器完成大小调整时,才可以在 UserControl 的 OnResize 中手动设置大小。如果通过调整表单大小来调整大小,则面板的高度和宽度不会更改为新值。
编辑:为了更清楚:用户控件被添加到 TabPage 并设置为 Dock=DockType.Fill。
Edit2:为了使其更复杂:这是控件使用的层次结构:
该表单包含一个带有 2 个控件(A 和 B)的拆分器。 (B) 包含一个带有 splitContainer 的用户控件 (C)。 (C) 中的拆分容器->panel1 包含一个选项卡控件 (D)。该选项卡控件 (D) 包含一个用户控件 (E)(在选项卡页中)。该用户控件 (E) 有一个 splitcontainer (F),其中放置了另一个带有 tabControl (G) 的用户控件。该选项卡控件(G)具有选项卡页面,并且在该页面中放置所描述的用户控件(H)。
如果我将控件 (H) 直接放置到 splitcontainer (C) 中的面板上,则一切正常。由于添加到 splitcontainer 或选项卡页的所有控件都设置为docktype=fill,我不明白为什么最后一个控件有这个问题。
Windows 窗体框架是否有限制子控件数量的限制?
编辑:我已经上传了一个 TestApplication,您可以使用它重现此问题。http://rapidshare.de/files/49092516/TestApplication.zip.html http://rapidshare.de/files/49092516/TestApplication.zip.html仅在 Vista 下出现。 Win XP和7都可以正常工作...
如果您调整表单大小,带有“...”按钮的文本框将不会调整大小,但如果您通过垂直 splitContainer 调整大小,则它可以工作。