如何将SplitContainerControl拆分器放置在百分比位置?

时间:2013-08-13 21:27:21

标签: winforms devexpress splitter

有没有办法将SplitContainerControl的拆分器放在控件大小的百分比位置,即使其容器调整大小也会保持不变?或者,另一方面,将面板的大小设置为百分比值?

3 个答案:

答案 0 :(得分:4)

如果SplitContainerControl.FixedPanel属性设置为SplitFixedPanel.None值,则在调整容器大小时,面板的宽度(或高度)会按比例更改。 因此,只是不要在SplitContainerControl中使用固定面板:

splitContainerControl1.FixedPanel = DevExpress.XtraEditors.SplitFixedPanel.None;
splitContainerControl1.SplitterPosition = splitContainerControl1.Width / 3;

答案 1 :(得分:2)

覆盖Control.OnLayout并根据百分比设置SplitContainerControl.SplitterPosition

答案 2 :(得分:1)

解决方案1: 参考:DevExpress:SplitContainerControl - Defaulting splitter position to 50%

要调整拆分器位置,只需将SplitContainerControl.SplitterPosition属性设置为控件的一半大小即可。例如,如果要设置垂直SplitContainerControl的拆分器位置,请使用以下代码段:

private void Form1_Load(object sender, EventArgs e)
{
    splitContainerControl1.SplitterPosition = splitContainerControl1.Height / 2; 
}

解决方案2:

  

如果没有固定面板,则为SplitterPosition属性   从容器的左侧或顶部指定拆分器的位置   edge(根据Horizontal属性)。

     

如果FixedPanel属性设置为SplitFixedPanel.None   值,面板的宽度(或高度)按比例改变   容器正在调整大小。

更改Form.Shown或Form.SizeChanged事件处理程序上的拆分器位置。 //首先设置FixedPanel属性

splitContainerControl1.FixedPanel = DevExpress.XtraEditors.SplitFixedPanel.None;

然后您可以使用Parnet控件的Control.ClientSizeChanged事件,如下所示:

private void ParentControl_ClientSizeChanged(Object sender, EventArgs e) 
{

   splitContainerControl1.SplitterPosition = splitContainerControl1.Width / 2;
   or
   splitContainerControl1.SplitterPosition = ParentControl.Width / 2;   

}