SplitContainer 控制項(Windows 表單)

來源:互聯網
上載者:User

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 個像素(而非預設的 1 個像素)為單位進行遞增。

定義 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 樣式的使用者介面
    1. 在表單內,聲明組成使用者介面的每個控制項。本樣本使用 TreeViewListViewSplitContainerRichTextBox 控制項來建立類似於 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 methods.// Set properties of TreeView control.treeView1.Dock = System.Windows.Forms.DockStyle.Fill;treeView1.TabIndex = 0;treeView1.Nodes.Add("treeView");// Set properties of ListView control.listView1.Dock = System.Windows.Forms.DockStyle.Top;listView1.TabIndex = 2;listView1.Items.Add("listView");// Set properties of RichTextBox control.richTextBox1.Dock = System.Windows.Forms.DockStyle.Fill;richTextBox1.TabIndex = 3;richTextBox1.Text = "richTextBox1";// Set properties of first SplitContainer control.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fil1;splitContainer2.TabIndex = 1;splitContainer2.SplitterWidth = 4;splitContainer2.SplitterDistance = 150;splitContainer2.Orientation = Orientation.Horizontal;splitContainer2.Panel1.Controls.Add(this.listView1);splitContainer2.Panel1.Controls.Add(this.richTextBox1);// Set properties of second SplitContainer control.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fil1;splitContainer2.TabIndex = 4;splitContainer2.SplitterWidth = 4;splitContainer2.SplitterDistance = 100;splitContainer2.Panel1.Controls.Add(this.treeView1);splitContainer2.Panel1.Controls.Add(this.splitContainer1);// Add the main SplitContainer control to the form.this.Controls.Add(this.splitContainer2);this.Text = "Intricate UI Example";}在 Visual Basic 中,添加對在 New() 過程中剛建立的過程的調用。在 Visual C# 中,將這行代碼添加到表單類的建構函式。

原文地址:http://blog.163.com/lina_qiu/blog/static/228156020077275124411/

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.