為了實作如下圖1到圖2效果,用ExpandableSplitter很友善,設定ExpandableSplitter的ExpandedControl屬性為panelEx_Right即可。
但是想實作圖3的效果,本以為用這個控件加上Form的Autosize屬性即可。
沒想搞了半天發現不管是form用autosize讓panel_right的dock為fill,還是panel_right錨定都無法實作這個效果。
仔細想想,autosize肯定不行,其和dock在實作上就是是沖突的,呵呵。
真是懶習慣了,動手加下邊幾句就可以解決,在這裡記錄一下。
public partial class Test : Form
{
//記錄右側Panel寬度
private int m_RightWidth = 0;
public Test()
{
InitializeComponent();
m_RightWidth = panelEx_Right.Width;
}
private void expandableSplitter_Click(object sender, EventArgs e)
{
if (expandableSplitter.Expanded)
{
m_RightWidth = panelEx_Right.Width;
this.Width -= m_RightWidth;
}
else
{
this.Width += m_RightWidth;
}
}
}
另外記得設定MinExtra屬性為0,不然ExpandableSplitter拖不到最邊上。