SplitterDistance 属性不会小于 25 像素
Posted
技术标签:
【中文标题】SplitterDistance 属性不会小于 25 像素【英文标题】:SplitterDistance Property won't get smaller than 25 pixels 【发布时间】:2015-05-29 10:39:37 【问题描述】:我在拆分容器中有一个拆分容器,当我将 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;
谢谢!
【问题讨论】:
您能否发布更多代码以提供您设置它的上下文?您是否尝试过在该行设置断点并确保它确实被命中? 它是在自动生成的 Designer 类中设置的。我确实设置了一个断点,它在那里中断。 您是否手动更改了设计器代码?如果是这样,它可能不会像您期望的那样运行。在您的表单或设计模式中以编程方式设置它。 在空白表单中尝试解决方案,除了拆分容器之外什么都没有(使用边框样式帮助您突出显示拆分器位置)并尝试我提到的代码。这将帮助您排除任何其他复杂因素,因为适当减小 MinSize 确实有效。 是的,我在设计模式下手动更改了它。由于某种原因,两者都不起作用,但将其设置在表单类中是有效的。谢谢! 【参考方案1】:确保您的拆分容器面板 MinSizes 没有设置得太高而无法降至 20。默认面板 MinSizes 为 25。拆分器距离将在不影响它的情况下尽可能低。
面板大小在整体拆分容器属性中设置。您可以在下面看到:
当然,您始终可以通过深入了解代码中的拆分容器属性以编程方式设置它们:
splitContainer1.Panel1MinSize = 0;
splitContainer1.SplitterDistance = 20;
[编辑]
进一步演示如下:
【讨论】:
我添加了更多代码。两个面板的 MinSize 都是 5,所以这似乎不是问题。以上是关于SplitterDistance 属性不会小于 25 像素的主要内容,如果未能解决你的问题,请参考以下文章
根据表单大小设置 splitContainer 属性大小 C# WinForms