在VS2010中,我有一个针对.NET Framework 4.0的项目,然后必须恢复到目标v.3.5.一旦发生这种情况,我所拥有的SplitContainer对象将无法显示并实际抛出错误:"无法将类型为'System.Windows.Forms.SplitContainer'的对象强制转换为'System.ComponentModel.ISupportInitialize'."
现在,我做了一些挖掘,发现3.5实际上并没有在SplitContainer上使用ISupportInitialize,而是在.NET 4.0中.我想我的问题是,如果我的目标是3.5并且仍然遇到此问题,我该如何更正?
重现问题的步骤:
任何有关这方面的帮助将不胜感激!
我有一个SplitContainer,并想知道我将如何设置两个面板的静态大小,并防止用户具有调整面板大小的能力.FixedPanel会成为解决方案吗?从我读到的,我不认为是.
我有一个SplitContainer控制,Splitter中间是非常难看的.通过设定BackColor的SplitContainer到(插入颜色在这里),然后设置BackColor的Panel1和Panel2白的,我可以有我的分流好看.但默认情况下,Windows会将选择标记放在Splitter上,甚至在选择之前.
如何确保选择标记从未显示在Splitter?

我使用的是SplitContainer,它只包含2个面板,但我需要3个(面板).
问题:
是否可以向SplitContainer添加更多面板?
if YES
how?
else
why not?
Run Code Online (Sandbox Code Playgroud)
谢谢 :-)
我无法找到有关如何将面板添加到SplitContainer的文档.我可以创建SplitContainer,但是我不能将我编码的面板放在splitcontainer中.
我试过了
sc.Container.Add(myPanel);
sc.Container.Add(myOtherPanel);
Run Code Online (Sandbox Code Playgroud)
但Container总是空的.有谁知道我做错了什么?
我有一个WinForm,顶部有一个bindingNavigator,下面有两个水平面板的splitContainer.splitContainer填充未被bindingNavigator占用的空间.
我想将底部面板设置为固定高度,例如100像素,并让顶部面板填充剩余的空间.
这是我目前的代码:
kundeteamSplitContainer.SplitterDistance = kundeteamSplitContainer.Height - 100;
Run Code Online (Sandbox Code Playgroud)
我原以为这会将分割器距离动态设置为始终小于总高度100个像素,使得底部面板占据剩余的100个像素.虽然在运行时重新调整表单大小时底部面板不断改变大小,但这不能按预期工作.
编辑:如果可能的话,我会坚持使用splitContainer.获得了一些与隐藏/显示已经实现的底部面板相关的功能,我不想再次执行该工作.
一般问题
该应用程序是C#WinForms .Net 4.0.
我有一个SplitContainer占据大部分形式的东西,它被设置为各个方向的锚点,所以它与表格一起重新调整大小.左侧面板(Panel1)有一个简单的菜单,这里没有问题.右侧面板(Panel2)更复杂,包含许多嵌套的选项卡控件(包含大量控件) - 它非常复杂,但并没有改变.
问题是重新调整表单大小不是很好.事实上,如果您通过缓慢拖动边缘来调整大小然后它可以正常工作,但快速拖动或使用"恢复"按钮(窗体的右上角)然后问题发生.
我的控制层次结构
以下是我的控件层次结构的一个简单示例,它绝对是一个缩减版本,但突出显示嵌套的选项卡控件,它可能有助于复制:
调试细节
经过一些调试后,看起来它实际上是Panel2(拆分容器的子代)没有正确调整大小,实际SplitContainer本身调整得很好.
以下是显示此信息的调试值...
全尺寸表格,在调整大小之前:
splitContainerMain.Width: 1479
splitContainerMain.Panel2.Width: 1206
panelCenter.Width: 1203
tabControlMain.Width: 1215
Run Code Online (Sandbox Code Playgroud)
如预期的那样,splitContainerMain.Panel2.Width小于splitContainerMain.Width.
调整问题后调整大小:
splitContainerMain.Width: 815
splitContainerMain.Panel2.Width: 1206
panelCenter.Width: 1203
tabControlMain.Width: 1215
Run Code Online (Sandbox Code Playgroud)
可以看出,splitContainerMain.Width已根据需要重新调整大小,但splitContainerMain.Panel2.Width其后的孩子却没有.
注意:请记住,如果我手动调整窗体大小,宽度会正确更新 - 这不是我没有正确设置任何锚点的问题.
我的努力到目前为止
我想知道问题是否与此问题有关,但我不准备创建一个新的"MySplitContainer"来尝试解决这个问题.
我试图做的是使用各种Form resize事件并尝试手动设置宽度,但无济于事.我想我想尝试的是Panel2.Width在某种事件中设置值.
我在寻找什么
splitContainerMain.Panel2.Width在splitContainerMain尺寸变化时正确调整大小?Panel2.Width应该是什么?如何从Form.Resize …所以我有3个分体式容器,每个容器有2个面板.
SplitContainer1 是停靠在Form(Parent)中的主要容器.
SplitContainer1.Panel1包含SplitContainer2哪个停靠.
SplitContainer1.Panel2包含SpliContainer3哪个停靠.
到现在为止还挺好.
SplitContainer1拥有SplitterWidth3,
SplitContainer2且SplitContainer3拥有SplitterWidth6.
在设计中,您可以看到SplitterWidth区别它们之间,但是当我生成解决方案中,SplitterWidth中SplitContainer2和SplitContainer3得到重置回4,无论我做什么.我已经更改了表单的"InitializeComponent"中的代码而没有任何效果.
我得到这个工作的唯一方法是在Load Event形式,重新指定SplitterWidths我发现完全愚蠢.为什么不能SplitterWidths保持我在Designer中指定的值?
如果有人能够对此有所了解,那将是多么棒的!!
谢谢你的时间,
彼得
我在WinForms桌面应用程序中使用Microsoft splitcontainer控件(.net 4/c#/ vs 2010).
我想在spliiter控件的面板之间放一个小按钮(或任何漂亮的UI元素)来折叠其中一个面板.例如,一个"按钮"有两个部分,如果我点击一个部分,右侧面板会折叠,如果我点击另一个部分,左侧面板会折叠.
我怎么能解决这个问题呢?
Thx提前!
我在Microsoft Visual C#2010 Express中构建我的界面,我注意到控件的属性工具栏中没有"set parent"属性?
我想知道为什么会这样,如果有一个干净的方式来启用此功能.或者如果没有,为什么它不可用?
我需要它的一个例子是,当我使用Splitcontainer并且Panel1有10个子面板都使用Dock模式'FIll'时,将新面板添加到Spitcontainer面板1变得非常困难.Visual Studio总是假设我正试图将我的新面板作为已经存在的最前沿面板的孩子.

c# visual-studio-2010 windows-forms-designer visual-studio splitcontainer