C#:锚定面板不会正确调整大小

Jan*_*nen 20 c# controls winforms

关于在用户控件中自动调整面板大小,我遇到了一个奇怪的问题.该面板固定在用户控件的所有4个侧面.但锚定并不总是如此:

如果通过调整窗体大小来调整用户控件的大小,则右侧和底部锚点不起作用.但是如果通过使用表单中的拆分器来调整控件的大小,则它可以正常工作.所有其他控件也受到调整大小正常工作的影响,只有这个面板不会这样做.

我看不出通过分割器和表单调整大小之间的区别.

仅在通过移动拆分器完成大小调整时,才能在UserControl的OnResize中手动设置大小.如果通过调整窗体大小来调整大小,则面板的高度和宽度将不会更改为新值.

编辑:更清楚:用户控件添加到TabPage并设置为Dock = DockType.Fill.

编辑2:使其更复杂:这是使用控件的层次结构:表单包含一个带有2个控件(A和B)的拆分器.(B)包含带有splitContainer的用户控件(C).(C)中的split container-> panel1包含tabcontrol(D).此tabcontrol(D)包含用户控件(E)(在标签页中).该用户控件(E)具有拆分容器(F),其中放置了具有tabControl(G)的另一个用户控件.此tabcontrol(G)具有tabpages,并且在此页面中是所描述的用户控件(H).

如果我将控件(H)直接放在拆分容器(C)中的面板上,一切正常.由于添加到splitcontainer或tabpage的所有控件都设置为docktype = fill,因此我无法理解为什么最后一个控件存在此问题.

Windows窗体框架中是否存在限制子控件数量的限制?

编辑:我上传了一个TestApplication,您可以使用它重现此问题. http://rapidshare.de/files/49092516/TestApplication.zip.html 它只在Vista下出现.Win XP和7正常工作...如果您调整窗体大小,带有"..."按钮的textBox将不会调整大小,但如果您通过垂直splitContainer调整大小,则它可以正常工作.

小智 36

深度嵌套存在一个错误,其中内核耗尽堆栈空间导致调整大小,停靠和锚定以无提示失败.

请参阅https://web.archive.org/web/20140818095718/http://support.microsoft.com/kb/953934

  • 这个虫子8年后仍然存在吗? (3认同)