有没有办法让SplitContainer只调整panel1的大小?我有一个Vertical SplitContainer,当我移动分割器时,我希望第一个面板的大小增加/减少,而不是改变第二个面板的大小,我希望表单增加和减小尺寸.
我创建了一些代码来增加/减少窗体的大小,但是Panel2也在改变大小,因此整个面板并不总是可见的.
我是否必须制作自己的容器,或者是否可以使用SplitContainer?
我有一个表单"MainWin",其中包含一个Panel"MainPanel"MainPanel包含SplitContainer"MainSplitContainer".Panel1包含TreeView,Panel2包含3个面板,这些面板根据TreeView中选择的项目可见.我希望这三个面板始终完全可见(我打算限制分割器的扩展,以便表单不能扩展到屏幕之外),这是可能的还是我应该创建自己的控件并调整使用的大小MouseDown,MouseUp和MouseMove事件?
我想获得splitContainer.Panel2下所有按钮和标签的背景颜色.当我尝试它时,我发现我没有成功运行任何控件(在Panel2下)我尝试这个代码:
foreach (Control c in ((Control)splitContainer.Panel2).Controls)
{
if ((c is Button) || (c is Label))
MessageBox.Show("Name: " + c.Name + " Back Color: " + c.BackColor);
}
Run Code Online (Sandbox Code Playgroud)
如何在splitContainer.Panel2下获取所有标签和按钮的所有背景颜色?
编辑:
我有一个winform窗口.当我改变屏幕大小时,屏幕会立即增加或减少.
我更喜欢窗口的Resize行为就像Split Container一样,只要我拖动鼠标我只看到标记窗口大小的行,并且只有在离开Resize操作时才会进行.
我看到几个例子表明,通过隐藏窗口的框架,然后通过点击窗口本身画框.
我希望通过单击窗口的框架(我不想隐藏框架)而不是在窗口上.
有没有办法做到这一点?(可以以任何方式覆盖Resize的行为).
我的表单上有一个SplitContainer控件。它停靠到窗体。SplitterDistance当表单加载时,我设置了from代码。
除SplitterDistance我调整表单大小时所做的更改外,这工作正常。例如,当我使表格变宽时,SplitterDistances似乎变大了,因此它保留了与父级宽度相同的百分比。
我不要这个 我希望分隔条和控件左侧之间的距离与调整窗口大小相同。但是,我不想设置,IsSplitterFixed = true因为我仍然希望允许用户更改它。
我在拆分容器中有一个拆分容器,当我将SplitterDistance设置为小于25像素的任何值时,SplitterDistance不会变小.我可以在运行期间使它小于25像素,没有问题.我可以通过代码或设计器使它更大,并在运行时没有问题.我想将其设置为大约20个像素,而无需用户重新调整大小.有没有人知道为什么它会一直恢复到25像素,如果还有什么可以让它少于那个?
我尝试过这个并不起作用:
//
// splitContainer3
//
this.splitContainer3.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitContainer3.Location = new System.Drawing.Point(0, 0);
this.splitContainer3.Name = "splitContainer3";
this.splitContainer3.Orientation = System.Windows.Forms.Orientation.Horizontal;
//
// splitContainer3.Panel1
//
this.splitContainer3.Panel1.RightToLeft = System.Windows.Forms.RightToLeft.No;
this.splitContainer3.Panel1MinSize = 5;
//
// splitContainer3.Panel2
//
this.splitContainer3.Panel2.Controls.Add(this.txtLineNums);
this.splitContainer3.Panel2.RightToLeft = System.Windows.Forms.RightToLeft.No;
this.splitContainer3.Panel2MinSize = 5;
this.splitContainer3.RightToLeft = System.Windows.Forms.RightToLeft.No;
this.splitContainer3.Size = new System.Drawing.Size(47, 562);
this.splitContainer3.SplitterDistance = 20;
this.splitContainer3.SplitterWidth = 2;
this.splitContainer3.TabIndex = 0;
this.splitContainer3.TabStop = false;
Run Code Online (Sandbox Code Playgroud)
谢谢!