1. 程式人生 > >C# SplitContainer 控制元件詳細用法

C# SplitContainer 控制元件詳細用法

引自:http://blog.sina.com.cn/s/blog_75c55a1501011280.html

1.可以將 Windows 窗體 SplitContainer 控制元件看作是一個複合體,它是由一個可移動的拆分條分隔的兩個面板。當滑鼠指標懸停在該拆分條上時,指標將相應地改變形狀以顯示該拆分條是可移動的。


使用 SplitContainer 控制元件,可以建立複合的使用者介面(通常,在一個面板中的選擇決定了在另一個面板中顯示哪些物件)。這種排列對於顯示和瀏覽資訊非常有用。擁有兩個面板使您可以聚合不同區域中的資訊,並且使用者可以輕鬆地使用拆分條(也稱為“拆分器”)調整面板的大小。

另外,還可以巢狀多個 
SplitContainer 控制元件,並且第二個 SplitContainer 控制元件可以水平放置,從而產生上面板和下面板。

請注意,SplitContainer 控制元件預設情況下可通過鍵盤來訪問。如果 IsSplitterFixed 屬性設定為 false,使用者可以按箭頭鍵來移動拆分器。

SplitContainer 控制元件的 orientation 屬性決定拆分器的方向,而不是決定控制元件本身的方向。因此,當該屬性設定為 Vertical 時,拆分器將垂直放置,從而產生左面板和右面板。

此外,還應注意 SplitterRectangle 屬性的值是隨 orientation 屬性的值變化的。有關更多資訊,請參見 
SplitterRectangle 屬性。

還可以限制 SplitContainer 控制元件的大小和移動。FixedPanel 屬性決定調整 SplitContainer 控制元件大小後,哪個面板將保持原來的大小,IsSplitterFixed 屬性則決定是否可以通過鍵盤或滑鼠來移動拆分器。

常用屬性、方法和事件

FixedPanel 屬性

確定調整 SplitContainer 控制元件大小後,哪個面板將保持原來的大小。

IsSplitterFixed 屬性

確定是否可以使用鍵盤或滑鼠來移動拆分器。

orientation 屬性

確定拆分器是垂直放置還是水平放置。

SplitterDistance 
屬性

確定從左邊緣或上邊緣到可移動拆分條的距離(以畫素為單位)。

SplitterIncrement 屬性

確定使用者可以移動拆分器的最短距離(以畫素為單位)。

SplitterWidth 屬性

確定拆分器的厚度(以畫素為單位)。

SplitterMoving 事件

拆分器移動時發生。

SplitterMoved 事件

拆分器移動後發生。

  2.如何:定義拆分視窗中的大小調整和定位行為

使用者可以輕鬆調整 SplitContainer 控制元件面板的大小並對其執行各種操作。但是,有時您可能要以程式設計方式控制拆分器放置的位置以及可以移動的程度。

利用 SplitContainer 控制元件上的 SplitterIncrement 屬性和其他屬性,您可以根據自己的需要精確控制使用者介面的行為。下表列出了這些屬性。

IsSplitterFixed 屬性

確定拆分器是否可以通過鍵盤或滑鼠進行移動。

SplitterDistance 屬性

確定從左邊緣或上邊緣到可移動拆分條的距離(以畫素為單位)。

SplitterIncrement 屬性

確定使用者可以移動拆分器的最短距離(以畫素為單位)。

  下面的示例修改了 SplitterIncrement 屬性,以建立“對齊拆分器”效果;在使用者拖動拆分器時,它會以 10 個畫素(而非預設的 個畫素)為單位進行遞增。

定義 SplitContainer 調整大小行為
在過程中,將 SplitterIncrement 屬性設定為所需大小,以實現拆分器的“對齊”行為。

在下面的程式碼示例中,在窗體的 Load 事件中將 SplitContainer 控制元件中的拆分器設定為拖動時跳過 10 個畫素。

C#
private void Form1_Load(System.Object sender, System.EventArgs e)
{
SplitContainer splitSnapper new SplitContainer();
splitSnapper.SplitterIncrement 10;
splitSnapper.Dock DockStyle.Fill;
splitSnapper.Parent this;
}
(Visual C#) 在窗體的建構函式中放置以下程式碼以註冊事件處理程式。

C#
this.Load += new System.EventHandler(this.Form1_Load);

3.如何:水平拆分視窗水平拆分視窗
在程式中,將 SplitContainer 控制元件的 orientation 屬性設定為 Horizontal。

C#
public void showSplitContainer()
{
SplitContainer splitContainer1 new SplitContainer ();
splitContainer1.BorderStyle BorderStyle.Fixed3D;
splitContainer1.Location new System.Drawing.Point (74, 20);
splitContainer1.Name "DemoSplitContainer";
splitContainer1.Size new System.Drawing.Size (212, 435);
splitContainer1.TabIndex 0;
splitContainer1.Orientation orientation.Horizontal;
this.Controls.Add (splitContainer1);

}

4.如何:用 Windows 窗體建立多窗格使用者介面在下面的過程中,將建立一個類似於在 Microsoft Outlook 中使用的多窗格使用者介面,該介面中包含“資料夾列表”、“郵件”窗格和“預覽”窗格。這種排列主要是通過在窗體上停靠控制元件實現的。在停靠控制元件時,可以確定控制元件要緊靠父容器的哪個邊緣。這樣,如果將 Dock 屬性設定為 Right,控制元件的右邊緣將停靠在它的父控制元件的右邊緣。此外,控制元件停靠邊緣的大小將調整為與它的容器控制元件的大小匹配。有關 Dock 屬性工作方式的更多資訊,請參見如何:在 Windows 窗體上停靠控制元件。該過程的重點是在窗體上排列 SplitContainer 和其他控制元件,而不是新增功能以使得應用程式類似於 Microsoft Outlook。若要建立該使用者介面,請將所有控制元件放到 SplitContainer 控制元件(其左側面板中包含 TreeView 控制元件)中。SplitContainer 控制元件的右側面板中包含另一個 SplitContainer 控制元件,其中 ListView 控制元件在 RichTextBox 控制元件上方。這些 SplitContainer 控制元件支援在窗體上分別調整其他控制元件的大小。可以改編此過程中的方法,製作出您自己的自定義使用者介面。以程式設計方式建立 Outlook 樣式的使用者介面在窗體內,宣告組成使用者介面的每個控制元件。本示例使用 TreeView、ListView、SplitContainer 和 RichTextBox 控制元件來建立類似於 Microsoft Outlook 的使用者介面。

C#
private System.Windows.Forms.TreeView treeView1;
private System.Windows.Forms.ListView listView1;
private System.Windows.Forms.RichTextBox richTextBox1;
private System.Windows.Forms. SplitContainer splitContainer2;
private System.Windows.Forms. SplitContainer splitContainer1;

建立定義使用者介面的過程。下面的程式碼設定屬性,以使窗體類似於 Microsoft Outlook 的使用者介面。但是,通過使用其他控制元件或使它們停靠在不同的位置,一樣可以輕鬆建立同樣靈活的其他使用者介面。
C#
public void  createOutlookUI()
{
// Create an instance of each control being used.
treeView1 new System.Windows.Forms.TreeView();
listView1 new System.Windows.Forms.ListView();
richTextBox1 new System.Windows.Forms.RichTextBox();
splitContainer2 new System.Windows.Forms.SplitContainer();
splitContainer1 new System.Windows.Forms.SplitContainer();

// Insert code here to hook up event