2010-07-21 114 views

回答

2

您可以设置的SplitContainer的SplitterDistance到控件的宽度(假设你有一个垂直分割的容器,使用高度,如果你有一横裂的容器)InitializeComponent();之后在构造函数

然后您可以附加到SplitterMoved事件并确保SplitterDistance大于控件宽度。

例如:

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Text; 
using System.Windows.Forms; 

namespace SplitterDistanceTest 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
     InitializeComponent(); 
     splitContainer1.SplitterDistance = groupBox1.Width; 
     splitContainer1.SplitterMoved += new SplitterEventHandler(splitContainer1_SplitterMoved); 
     } 

     void splitContainer1_SplitterMoved(object sender, SplitterEventArgs e) 
     { 
     ResizeSplitterDistance(); 
     } 

     private const int MAXIMUM_SIZE = 200; 

     private void ResizeSplitterDistance() 
     {  
     if (splitContainer1.SplitterDistance < groupBox1.Width) 
     { 
      splitContainer1.SplitterDistance = groupBox1.Width; 
     } 
     if (splitContainer1.SplitterDistance > MAXIMUM_SIZE) 
     { 
      splitContainer1.SplitterDistance = MAXIMUM_SIZE; 
     } 

     // You could also do max/min percentages. Ive shown this below 
     // but commented out 
     /*int minimum_percent = 30; 
     int minimum_size = (int)((minimum_percent/100m) * (decimal)splitContainer1.Width); 
     int maximum_percent = 50; 
     int maximum_size = (int)((maximum_percent/100m) * (decimal)splitContainer1.Width); 
     if (splitContainer1.SplitterDistance < minimum_size) 
     { 
      splitContainer1.SplitterDistance = minimum_size; 
     } 
     if (splitContainer1.SplitterDistance > maximum_size) 
     { 
      splitContainer1.SplitterDistance = maximum_size; 
     }*/ 
     } 
    } 
} 
4

如果您不使用固定面板,请使用panel1和panel2的MinSize

说,Panel1MinSize = 20panel2MinSize = 50