代碼
/*splitter控制項一定要設定成為top或bottom 與上面的或下面的控制項Dock一致才有效果。
而且一定要注意這三個控制項的拖入順序。1.panel1,2.splitter,3.panel2.一定要保證splitter在中間拖入,是VS2005的小BUG吧。
*
* Splitter 控制項可以在運行時調整停靠到 Splitter 控制項邊緣的控制項的大小。表單布局有些麻煩,需要實踐中才會明白。現說明表單分左右和上左右的兩種情況。
第一種:表單分左右兩塊。 先拖拽一個treeView,設定其Dock屬性為Left,再拖拽一個Splitter,設定其Dock屬性為Left(預設情況下),最後拖拽一個listView,設定其Dock屬性為Fill,OK成功。
第二種:表單分上左右三塊。 先拖拽一個toolBar,設定其Dock屬性為Top,再拖拽一個treeView,設定其Dock屬性為Left,再拖拽一個Splitter,設定其Dock屬性為Left,最後拖拽一個listView,設定其Dock屬性為Fill,OK成功。有時需要設定toolBar為置於底層,listView(Dock屬性為Fill的控制項)為置於頂層。如果不這樣,Splitter控制項會將表單分為2半,一半是treeView,一半是toolBar和listView。
Splitter 必然要和拆分的兩個控制項中之一的Dock屬性一樣,另一個控制項的Dock屬性必須是Fill,最好將其置於頂層。
*/
代碼
public partial class FormStart : Form
{
TreeView treeView1 = new TreeView();
ListView listView1 = new ListView();
Splitter splitter1 = new Splitter();
ToolTip tt = new ToolTip();
Label l = new Label();
public FormStart()
{
InitializeComponent();
}
private void CreateMySplitControls()
{
treeView1.Dock = DockStyle.Left;
splitter1.Dock = DockStyle.Left;
//splitter1.MinExtra = 100;
//splitter1.MinSize = 75;
splitter1.Width = 10;
splitter1.Height = 300;
l.Text = "3";
//l.AutoSize = true;
l.Location = new Point(-6, splitter1.Height / 2 - l.Height);
l.Font = new System.Drawing.Font("Marlett", 14, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point, (byte)3);
l.ForeColor = Color.Red;
l.Cursor = Cursors.Hand;
splitter1.Controls.Add(l);
listView1.Dock = DockStyle.Fill;
treeView1.Nodes.Add("TreeView Node");
listView1.Items.Add("ListView Item");
tt.SetToolTip(l, "隱藏左邊的的控制項");
l.Click += new EventHandler(ShowHide);
splitter1.Resize += new EventHandler(splitter_Resize);
this.Controls.AddRange(new Control[] { listView1, splitter1, treeView1 });
}
private void FormStart_Load(object sender, EventArgs e)
{
CreateMySplitControls();
}
private void ShowHide(object sender, EventArgs e)
{
if (l.Text == "3")
{
l.Text = "4";
tt.SetToolTip(l, "顯示左邊的的控制項");
treeView1.Visible = false;
}
else
{
l.Text = "3";
tt.SetToolTip(l, "隱藏左邊的的控制項");
treeView1.Visible = true;
}
}
private void splitter_Resize(object o, EventArgs e)
{
l.Location = new Point(-6, splitter1.Height / 2 - l.Height);
}
}
Form1.Designer.cs
代碼
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(292, 273);
this.Controls.Add(this.splitter1);
this.Controls.Add(this.panel1);
this.Controls.Add(this.panel2);
this.Name = "Form1";
this.Text = "Form1";
this.panel1.ResumeLayout(false);
this.panel2.ResumeLayout(false);
this.panel2.PerformLayout();
this.ResumeLayout(false);
Windows字型的字元運用。。。。
Marlett 字型往上寫“5”(向上箭頭)、寫“6”(向下箭頭)就行了(事實上 Windows 所有視窗的關閉、最大化、最小化、恢複、協助、上下左右箭頭都是用 Marlett 字型畫上去的,系統禦用);
代碼
private void Form2_Load(object sender, EventArgs e)
{
//splitter1.MinExtra = 800;
//splitter1.MinSize = 75;
splitter1.Width = 800;
splitter1.Height = 15;
l.Text = "5"; //寫入的字,具體指示到符號的不同。。比如3為左箭頭,4為右箭頭。
//l.AutoSize = true;
//l.Location = new Point( 200 , 50);
l.Font = new System.Drawing.Font("marlett", 14, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, (byte)14);
l.ForeColor = Color.Red;
l.Cursor = Cursors.Hand;
splitter1.Controls.Add(l);
}