C# SplitContainer 控件详细用法(转)
(2010-02-02 21:51:35)
标签:
杂谈 |
分类: C#编程 |
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#
privatevoid Form1_Load(System.Object sender, System.EventArgs e)
{
SplitContainersplitSnapper = new SplitContainer();
splitSnapper.SplitterIncrement= 10;
splitSnapper.Dock= DockStyle.Fill;
splitSnapper.Parent= this;
}
(VisualC#) 在窗体的构造函数中放置以下代码以注册事件处理程序。
C#
this.Load+= new System.EventHandler(this.Form1_Load);
3.如何:水平拆分窗口水平拆分窗口
在程序中,将SplitContainer 控件的 orientation 属性设置为 Horizontal。
C#
publicvoid showSplitContainer()
{
SplitContainersplitContainer1 = 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#
privateSystem.Windows.Forms.TreeView treeView1;
privateSystem.Windows.Forms.ListView listView1;
privateSystem.Windows.Forms.RichTextBox richTextBox1;
privateSystem.Windows.Forms. SplitContainer splitContainer2;
privateSystem.Windows.Forms. SplitContainer splitContainer1;
创建定义用户界面的过程。下面的代码设置属性,以使窗体类似于Microsoft Outlook 的用户界面。但是,通过使用其他控件或使它们停靠在不同的位置,一样可以轻松创建同样灵活的其他用户界面。
C#
publicvoid 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();
使用
另外,还可以嵌套多个
请注意,SplitContainer
SplitContainer
此外,还应注意
还可以限制
常用属性、方法和事件
FixedPanel
IsSplitterFixed
orientation
SplitterDistance
SplitterIncrement
SplitterWidth
SplitterMoving
SplitterMoved
2.如何:定义拆分窗口中的大小调整和定位行为
用户可以轻松调整
利用
IsSplitterFixed
SplitterDistance
SplitterIncrement
下面的示例修改了
定义
在过程中,将
在下面的代码示例中,在窗体的
C#
private
{
SplitContainer
splitSnapper.SplitterIncrement
splitSnapper.Dock
splitSnapper.Parent
}
(Visual
C#
this.Load
3.如何:水平拆分窗口水平拆分窗口
在程序中,将
C#
public
{
SplitContainer
splitContainer1.BorderStyle
splitContainer1.Location
splitContainer1.Name
splitContainer1.Size
splitContainer1.TabIndex
splitContainer1.Orientation
this.Controls.Add
}
4.如何:用
C#
private
private
private
private
private
创建定义用户界面的过程。下面的代码设置属性,以使窗体类似于
C#
public
{
//
treeView1
listView1
richTextBox1
splitContainer2