所以我有3个分开的容器,每个容器有2个面板。
SplitContainer1
是停靠在Form(Parent)中的主要容器。
SplitContainer1.Panel1
包含停靠的SplitContainer2
。
SplitContainer1.Panel2
包含停靠的SpliContainer3
。
到目前为止一切顺利。
SplitContainer1
的{{1}}为3。
SplitterWidth
和SplitContainer2
的{{1}}为6。
在Designer中,您可以看到它们之间的SplitContainer3
差异,但是当我构建解决方案时,SplitterWidth
和SplitterWidth
的{{1}}会重置为4不管我做什么。我更改了" InitializeComponent"中的代码。形式没有效果。
我实现此功能的唯一方法是在表单的SplitterWidth
中,重新指定我发现完全愚蠢的SplitContainer2
。为什么SplitContainer3
保持在我在Designer中指定的值?
如果有人能够对此有所了解,那会是什么太棒了!!
感谢您的时间,
彼得
答案 0 :(得分:1)
只是为了永远不会得不到答案 -
这是一个旧版本的错误,现在已经在许多版本的Visual Basic中使用,并且永远不会被解决(也不可能解决)。
正如Hans Passant所提到的那样,问题归因于ISupportInitialize
的{{1}}实施。
由于这是一个错误,因此没有明确的方法来解决任何符合逻辑的问题。
我在模拟程序中测试过的一种方法是@xfx说 - 以编程方式添加和操作控件,而不是使用工具箱。
另一种方法是以编程方式重新加载SplitContainer
,无论是SplitterWidths
,最有可能,还是代码中可能需要的其他地方。
答案 1 :(得分:0)
我认为这不是一个错误。
当容器控件嵌套到设计器中的其他容器控件中时,嵌套控件必须是从工具箱拖放到窗体上的第一个控件。
例如,如果有两个SplitContainers - splitContaner1(child)和splitContaner2(parent) - 要在设计时嵌套,则必须首先将splitContaner1(嵌套)拖放到窗体上。在父父splitContaner2之后。最后,splitContaner1可以嵌套到splitContaner2.Panel1(或2)中。
此规则在设计时和运行时确保属性(例如SplitterWidth属性)的相同影响,并且将节省在load事件处理程序或构造函数中编写其他代码以修复“bug”的需要。