的应用程序是C#的WinForms .NET 4.0。
我有一个SplitContainer
占据了大部分的形式,它被设置为所有方向锚,所以它随着形式重新调整大小。左面板(Panel1)有一个简单的菜单,这里没有问题。右侧面板(Panel2)更加复杂,并且包含许多嵌套的选项卡控件(包含许多控件) - 它非常复杂,但不会改变。
问题是重新调整表格的效果并不好。事实上,如果通过缓慢拖动边缘来调整大小,那么它可以正常工作,但可以快速拖动或使用“恢复”按钮(表单右上角),然后就会出现问题。
我的控制层次
以下是我的控制层级,它绝对是一个削减版的一个简单的例子,但确实凸显了嵌套的标签控制的,可与复制帮助:
- 形式
- 拆分集装箱(主播:上,左,下,右)
- SC Panel1的(最小宽度:300)
- TreeViewControl(忘记它叫什么)
- SC是Panel2
- 面板(锚:顶部,左边,底部,右侧)
- 选项卡控件(锚点:顶部,左侧,底部,右侧)
- 选项卡控件包含大量溢出屏幕并需要导航按钮才能显示的页面p右下角(主播:上,左,下,右)
- 选项卡控件(锚点:顶部,左侧,底部,右侧)
- 面板(锚:顶部,左边,底部,右侧)
- SC Panel1的(最小宽度:300)
- 拆分集装箱(主播:上,左,下,右)
调试详细
一些调试后,它看起来实际上是Panel2
(拆分容器的孩子)没有正确调整大小,而实际的SplitContainer
本身调整正常。
这里是调试值,显示此...
全宽形式,调整大小前:
splitContainerMain.Width: 1479
splitContainerMain.Panel2.Width: 1206
panelCenter.Width: 1203
tabControlMain.Width: 1215
所有预期,splitContainerMain.Panel2.Width
比splitContainerMain.Width
小。
调整大小后在那里出现问题:
splitContainerMain.Width: 815
splitContainerMain.Panel2.Width: 1206
panelCenter.Width: 1203
tabControlMain.Width: 1215
可以看出,在splitContainerMain.Width
已调整为所需,但splitContainerMain.Panel2.Width
,随后其子都没有。
注意:请记住,宽度更新正确,如果我手动调整的形式慢慢地 - 这是不是我没有正确设置任何锚的问题。
我的努力到目前为止
我想知道如果这个问题是related to this problem here,但我不准备建立一个新的“MySplitContainer”,试图解决这个问题。
我试图做的是使用各种Form resize事件,并尝试手动设置宽度,但无济于事。我想我想尝试的是从某种事件中设置Panel2.Width
值。
我所寻找的
- 反正是有强制
splitContainerMain.Panel2.Width
正确调整splitContainerMain
大小变化时? - 或者,我该如何计算
Panel2.Width
应该是什么?我怎样才能从Form.Resize
事件中设置这个值? (或另一个事件?)
我试图把一个形式进行测试,但我还没有看到你描述的不良行为。如果你可以提供更多的布局细节,这将有所帮助。但除此之外,我没有太多运气来重现你的结果。 – DonBoitnott
@DonBoitnott:我已经添加了一些关于我的布局的细节,我知道这不是很容易复制,但也许它会做一些事情。我会看看我是否可以在一个新的Winforms应用程序中复制 – musefan
什么是'panelCenter'?而且你如何在代码中调整大小... ...只需拖动窗体边缘? – DonBoitnott