我想設置splitterdistance移動的最小和最大距離...如何設置...我試圖使用panelMinSize它沒有工作...如何設置分配器控制的最小/最大距離?
其實在一個面板的分離器我有一個控制,分配器應該根據控件進行調整。
我想設置splitterdistance移動的最小和最大距離...如何設置...我試圖使用panelMinSize它沒有工作...如何設置分配器控制的最小/最大距離?
其實在一個面板的分離器我有一個控制,分配器應該根據控件進行調整。
您可以設置的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;
}*/
}
}
}
如果您不使用固定面板,請使用panel1和panel2的MinSize
。
說,Panel1MinSize = 20
和panel2MinSize = 50