C#控件大全

Download Report

Transcript C#控件大全

控件的使用
Zhanghz
2006.12.1
本章要点


学习窗体控件的编程。首先介绍如何使用窗体
设计器向窗体中添加控件以及如何在窗体设计
器中调整控件位置和大小等属性。然后依次介
绍各个常用的控件,包括控件所特有的属性和
事件。
纲要



添加控件
调整控件
控件的分类介绍
为窗体添加控件

在窗体设计器中打开要添加控件的窗体,然后打开
“工具箱”面板,如图。


在“解决方案资源管理器”中双击相应的窗体节点(比如一
个Form1.cs文件)就可以在窗体设计器中显示该窗体。
3种方法将“工具箱”中的控件添加到窗体中



双击“工具箱”中要使用的控件,此时将会在窗体的默认位
置(客户区的左上角)添加默认大小的控件。
在“工具箱”中选中一个控件,鼠标指针变成与该控件对应
的形状;把鼠标指针移到窗体中要摆放控件的位置,按下鼠
标左键并拖动鼠标画出控件大小后,松开鼠标即可在窗体的
指定位置绘制指定大小的控件。
直接把控件从“工具箱”拖放到窗体中,使用这种方式可以
在指定的位置添加默认大小的控件。

可以直接使用代码向窗体添加控件。


把一个按钮控件btnNew添加到窗体中:
Button btnNew=new Button();
两种类型的控件



具有用户界面的控件:会出现在窗体中,并且在运行时可见。
没有用户界面的控件:主要用于在后台提供一些功能,在运
行时不可见。当在窗体设计器中把它们添加到窗体中时,这
些控件将出现在窗体设计器下面的窗格中。
如图


在控件的Text属性中使用与号&,可以为该控件指定
快捷访问键。例如,如果按钮控件btnNew的Text属性
值为“新建(&N)”,就可以通过Alt + N组合键直接访
问该按钮(此时触发Click事件)。当显示在控件的标
题时,访问键会加上下划线(若要在标题中输入与号,
则要使用“&&”的形式)。
窗体是一种容器控件,其他的容器控件还有分组框控
件和面板控件等。在容器控件中可以包含其他控件,
这些被包含的控件保存在容器控件的Controls属性中。
调整控件



对控件的调整,包括对齐、大小调整和间隔等等。
选中要调整的控件,使用“格式”菜单或是快捷菜单
中的命令或者工具栏上的格式按钮进行调整。在调整
控件的格式时,将按照基准控件对选择的多个控件进
行调整。
使用Ctrl键或Shift键选择多个控件,也可以拖动鼠标
选择一个控件范围,此时最先进入窗体的控件将作为
调整的基准控件。 被选中的控件中,基准控件周围是
白色方框,其他控件周围是黑色方框,如图。
1)对控件分层


右键单击要操作的控件,从快捷菜单中选择
“置于顶层(或底层)”命令或者单击工具栏
中的置于顶层(或底层)按钮,则可以把控件
置于窗体的最顶层(或底层)。
也可以在代码中将控件置于窗体顶层或底层


btnNew置于顶层:btnNew.BringToFront();
btnNew置于底层:btnNew.SendToBack();
2)在窗体中定位控件

两种定位方法





在窗体设计器中通过拖动控件进行定位
通过指定控件的Location属性来定位控件
控件的位置相对于包含它的容器控件,单位为像素。
在选中控件之后可以使用箭头键微调,更精确地定位
控件。
在属性窗口中修改控件的Location属性改变控件位置:
直接输入控件位置值,X和Y值以逗号隔开,或是展
开Location属性节点,分别输入X坐标值和Y坐标值。
在代码中设置控件位置


btnNew.Location = new System.Drawing.Point(100,100);
btnNew.Left = 100; btnNew.Top += 200;
3)改变控件大小

在窗体设计器中改变控件大小的方法




在代码中通过Size属性设置控件大小


使用鼠标直接拖动控件大小
在属性窗口中改变控件的Size属性值
在窗体中选中控件,然后使用Shift +箭头键来微调控件大小
btnNew.Size=new System.Drawing.Size(100,100);
可以使用Bounds属性同时设置控件的位置和大小

btnNew.Bounds=new
System.Drawing.Rectangle(10,10,100,100);
4)固定控件



使用Anchor属性使控件的位置相对于窗体某一边固定,改变窗体大小
时,控件的位置将会随之改变而保持这个相对距离不变。
使用属性窗口改变Anchor属性时,单击控件周围的上下左右的某个方
框使之变成深灰色,就表示控件相对于窗体这条边的距离固定
System.Windows.Forms命名空间中包含了一个枚举类型
AnchorStyles,其中定义了Anchor属性可以组合的16种不同属性值。
可以在代码中设置Anchor属性。



控件到窗体4条边的距离都保持不变
btnNew.Anchor=AnchorStyles.All;
控件到窗体底边和左边的距离保持不变
btnNew.Anchor=AnchorStyles.Bottom | AnchorStyles.Left;
控件没有固定到任何一边
btnNew.Anchor=AnchorStyles.None;



控件还可以停靠在窗体的某一边上,通过控件的Dock
属性进行设置。
使用属性窗口设置Dock属性时会显示一个设置窗口,
单击该窗口中的按钮可以设置相应的Dock属性值。这
些值在枚举类型System.Windows.Forms.DockStyle
中定义。
通过代码设置按钮控件btnNew停靠在窗体的顶边上
(这时btnNew的顶边和底边自动扩展到窗体顶边大
小,并且改变窗体大小时,btnNew的大小会随之改
变)

btnNew.Dock= System.Windows.Forms.DockStyle.Top;
5)设置控件的Tab键顺序


控件的Tab键顺序决定了用户使用Tab键切换时的顺序。
默认情况下,控件的Tab键顺序就是控件添加到窗体
的中的顺序。
选择“视图|Tab键顺序”命令把窗体设计器切换到
Tab键顺序选择模式,再次选择该命令可以回到设计
模式。



在Tab顺序选择模式中,可以单击各个控件把它们的Tab键顺
序设置成单击控件的顺序
也可以通过属性窗口设置各个控件的TabIndex属性来
改变Tab键顺序
位于分组框中的控件的TabIndex也按照这个规则来修
改。
控件的分类介绍

按钮类控件
文本类控件
逻辑分组控件
滚动类控件
工具栏和状态栏
视图类控件
其他控件

控件种类繁多,在学习时注意对比和触类旁通。






按钮类控件

都从类ButtonBase派生,这个类提供了按钮类
控件通用的基本操作。



按钮控件
单选按钮控件
复选框控件
按钮


使用Button类进行封装,包含有属性、方法和简化按钮互
用任务的事件。可以在按钮中显示文字或图像,还可以调
整按钮控件的显示方式。
使用Button类的公开属性控制按钮外观





FlatStyle。定义如何绘制控件的边缘,时一个枚举类型,可选值有:
Flat(平面的)、PopUp(由平面到凸起)、Standard(三维边
界)、System(根据操作系统决定)
BackColor。指定控件的背景色,默认为KnownColor.Control(这
是操作系统为控件定义的默认颜色)。
ForeColor。指定控件的文字颜色,默认为
KnownColor.ControlText。
Text。控制显示在控件中的文字。
TextAlign,指定按钮文字的对齐方式;ImageAlign,指定图像的
对齐方式。

注意




可以在属性窗口设置属性,可以在代码中对属性进行设置。例如修改按钮背景
色,可以使用代码btnNew.BackColor=Color.Red;
“&”号的使用。作为字符的前缀,通过Alt+相应的字符实现点击按钮的操作。例
如,btnNew.Text = “&Ok”;
一般使用默认的背景和前景控件颜色。
用Button类的公开属性控制按钮操作



这里讨论的属性对各类控件普遍使用。这些属性都继承于Control
基类。
Enabled。激活(true)或禁用(false)按钮。禁用时无法选中按
钮,且按钮文字将变为系统禁用文本的颜色。
Visible。控件是否可见。有时隐藏控件比简单禁用控件更合适,例
如控件只用于特殊情况,就可以在一般情况下将它隐藏。这还能降
低窗体的杂乱性。


btnNew.Visible=false;
也可以使用方法隐藏控件:btnNew.Hide();显示控件:btnNew.Show();

按钮事件


Click事件。单击按钮或是在按钮具有焦点时按下空格键都将触发
Click事件。在设计器中可以通过双击按钮来进入代码编辑器添加
Click事件的处理代码。
把按钮与DialogResult值联系起来


窗体DialogResult属性值可以为OK、Yes、No、Abort、Ignore、
Retry、Cancel、None等。当窗体作为对话框使用时,在窗体关闭
前这个值应该与窗体联系起来,并且在调用ShowDialog方法时还
应该将它作为结果返回。
可以使用按钮控件的DialogResult属性来为窗体设置DialogResult
属性。当该按钮用于关闭窗体时,DialogResult的值就将通过窗体
传递。

closeButton.DialogResult = DialogResult.OK;
单选按钮


使用RadioButton类封装,通常用来执行多选
一的操作。单选按钮通常分组使用,在一个组
中,只能有一个按钮处于选中状态。
单选按钮属性

除了Button中讨论的一些属性之外,单选按钮还比
较常用的属性还有:


Checked属性,用来确定单选按钮是否被选择
Appearance属性,用来确定单选按钮的显示形式,有两
个可能值:Appearance.Button(显示为按钮),
Appearance.Normal(正常显示)

单选按钮的常用事件


CheckedChanged事件。当单选按钮的Checked属
性发生变化时,会触发这个事件,可以使用这个事
件根据单选按钮的状态变化进行适当的操作。在设
计器中双击单选按钮将进入代码编辑器中这个事件
的定义部分。
Click事件。在选中单选按钮的时候触发,要处理这
一事件,必须提供一个事件处理器,将在后面的章
节对这一技术进行讨论
复选框


用CheckBox进行封装。复选框与单选按钮极为相似,
只是复选框允许零个或多个选择。
复选框属性




也具有RadioButton中介绍的一些属性。
Checked属性,获取或设置复选框是否选中。但与单选按钮
不同之处是,复选框可以支持3种状态(增加一种不确定状
态)。这需要用到ThreeState属性,默认值为false,设为
true将激活第三种状态。
CheckState属性,用来判断或设置复选框状态,有三种可能:
Checked,Unchecked,Indeterminate(未被选中也未被清
除,且显示禁用复选标记)。复选框处于选中或不确定状态
时,Checked属性都为true。
当复选框的Appearance属性设置成Button时,不确定状态是
平面按钮,选中状态是按下的按钮,未选定状态是凸起按钮。

复选框事件



CheckedChanged事件,改变复选框Checked属性
时触发。在设计器中双击相应的复选框将进入代码
编辑器中这一事件的定义部分。
CheckStateChanged事件,改变复选框
CheckedState属性时触发。在属性窗口中选择这一
事件双击进入其代码编辑。
示例程序
文本类控件





文本类控件通常用来显示或输入信息,是构成
用户界面的最基本控件
文本框控件
标签控件
列表框控件
组合框控件
文本框控件



用TextBox类进行封装,是按钮控件外最常使用的控
件,常用于接收文本输入。TextBox类派生于
TextBoxBase类。
默认情况下,文本框控件只接受单行文本,此时只能
水平改变控件大小而不能垂直改变。通过设置
TextBox的Multiline属性为true,可以使用多行文本框。
文本框属性

Text属性,获取用户输入到文本框中的文本。


例:string newItem = newTextBox.Text;
TextLength属性,获取文本框控件中文本的长度
文本框属性(1)

Lines属性,对于多行文本框,除了可以使用Text属性获取文
本外,还可以使用Lines属性,它返回一个字符串的数组,每
个数组元素对应一行文本。




注意,在Lines数组中的元素没有必要与文本框控件的物理行相
对应。如果允许文本换行,那么无论文本占了多少物理行,在
Lines数组中都只是一个元素。
可以在属性窗口中使用Lines属性为多行文本框提供初始文本。
在属性窗口中选择Lines属性,将显示一个说明为“…”的小按
钮。单击它就会显示“字符串采集编辑器”对话框,在其中可
以输入控件文本。
ReadOnly属性,当它设置为true时,只能浏览而不能修改文
本框中显示的内容。
MaxLength属性,设置文本框能输入的最大字符数。
文本框属性(2)


WordWrap属性,选择每行的文本是可以扩展超出控件边缘
(false)或是在控件边界处自动换行(true),默认值为
true。
ScrollBars属性,指定是否使用以及使用怎样的滚动条。属
性值必须是枚举类型ScrollBars的值:None、Horizontal
(水平)、Vertical(垂直)、Both。


如果文本框的WordWrap属性设置为true,则水平滚动条不显示。
BorderStyle属性,管理文本框控件的外观。属性值必须是枚
举类型BorderStyle的值:None、FixedSingle、Fixed3D
(默认值)。
文本框属性(3)

SelectedText、SelectionStart、SelectionLength属性,用来
获取或设置当前在文本框中选择的文字,看个例子:


PasswordChar属性,用来指定文本框的屏蔽字符。对用于
输入密码或是其他敏感信息的文本框,使用这一属性来设置
代替的掩饰字符


textBox1.Text = “这是一个文本框控件”;
textBox1.SelectionStart = 4;
textBox1.SelectionLength = 3;
string selection = textBox1.SelectedText; //selection的内容为
“文本框”
例如,textBox1.PasswordChar= ‘ * ‘;
AcceptsReturn、AcceptsTab属性
文本框属性(4)




通常情况下,不能在文本框中使用Enter键换行或是Tab键输入
制表符,这两个键的默认行为是触发窗体的AcceptButton属性
的Click事件和切换输入焦点。
AcceptsReturn属性,设置为true则在指定的控件中按下Enter
键将会在其中新建一行文本;如果为false,则要按下Ctrl +
Enter才能实现上述功能,如果只按下Enter将是激活窗体的默
认按钮。
AcceptsTab属性,设置为true则在指定的控件中按下Tab键时会
在其中输入一个制表符;如果为false,则要使用Ctrl + Tab组合
键来实现上述功能,单独按下Tab键只是切换焦点。
如果文本框不支持多行输入,则这两个属性无效。

文本框的方法










AppendText:向文本框中附加文字
Clear:清除文本框中的所有文字
ClearUndo:清除有关撤销操作的信息
Copy:把文本框中的当前选择文字复制到剪贴板
Cut:把文本框中的当前选择文字移动到剪贴板
Paste:使用剪贴板中的内容替换文本框中当前选择的内容
Select:在文本框中选择指定范围的文字
SelectAll:选择文本框中的所有内容
Undo:撤销文本框中的最后一次修改操作
文本框的事件

TextChanged事件,当文本框内容发生改变时将触发这个事件。若
另一个控件要根据当前文本框的内容来更新时,这个事件很有用。
看个例子。
Public TextBoxForm()
{
…
textBox1.TextChanged +=
newEventHandle (text_TextChanged);
}
private void textBox_TextChanged(object sender,
System.EventArgs e)
{
label1.Text = “Contents:” + textBox1.Text;
}
这里,一旦textBox1的内容被更新,label1的值也会被更新。


注意,在TextChanged事件的处理方法或是OnTextChanged
方法中不要试图修改本文本框的内容,否则将循环触发
TextChanged事件,造成死循环。
标签控件


使用Label类进行封装,通常用于显示静态文本,比
如为其他控件显示描述性信息或根据应用程序的状态
显示相应的提示信息。
标签控件具有与其他控件相同的许多属性,但是它通
常都作为静态控件使用,在程序中一般很少直接对其
进行编程,主要有用到的属性有




Text属性,设置标签中显示的说明文字
Size属性,设置标签大小
AutoSize属性,指定标签中的说明文字是否可以动态变化。
设置为true时将忽略Size属性的值。
BorderStyle属性,设置标签边框,取值与文本框一样。

窗体的标签控件有一个不寻常的地方——它从不接收
输入焦点。它会将焦点按Tab键的控制次序传递给下
一个控件。



跟文本框或其他控件相关的标签控件经常被直接放置在相关
控件的前面,并提供在表示快捷键的字符前面附加&符号作
为说明。可以使用Alt + 相应快捷键来选择与标签相关的控件。
假设textBox1与标签label1相关,label1.Text =“输入名字
(&N):”;那么按下Alt + N将焦点切换到textBox1。
一般不需要对标签进行事件处理
链接标签


用LinkLabel类进行封装,它从Label类派生而来,具有标签控件的
所有属性、方法和事件。它的外观和操作方式都和网页中的超链
接类似,常用于提供到相关网页的链接,或者作为使用网页类用
户界面的窗体的浏览控件。
链接标签属性
 为不同状态下的链接文本定义颜色的属性




ActiveLinkColor,用于指定链接在被单击的过程中的颜色,默认为
Red。
DisabledLinkColor,用于指定链接被禁用时的颜色,把控件的
Enabled属性设置为false即可禁用链接
LinkColor,用于指定链接在普通状态下(被点击或访问前)的颜色,
默认为Blue。
VisitedLinkColor,用于指定访问过的链接的颜色,访问过的链接通过
LinkVisited属性指定,默认为Purple。

LinkArea属性,默认情况下,链接标签的Text属性中的内容
都被当作超级链接,整个控件是可单击的。可以通过
LinkArea属性来定义Text中的部分内容为超链接,使用
LinkArea类来设置。
LinkArea range = new LinkArea(8,4); //8为起始位置,4为长度
linkLabel1.LinkArea = range;
或linkLabel1.LinkArea = new
System.Windows.Forms.LinkArea(8,4);


LinkBehavior属性,指定链接的外观。其值必须为枚举类型
LinkBehavior的值:




AlwaysUnderline:可点击部分总有下划线
HoverUnderline:可点击部分在鼠标指针停留到控件上时显示
下划线
NeverUnderline:没有下划线
SystemDefault:服从系统默认设置(默认值)

Links属性,保存链接标签中的多个超链接。例如下面代码:


linkLabel1.Text = “请访问http://202.38.64.10/~zhanghz站点或My
Page获取信息”;
linkLabel1.Links.Add(3,28);
linkLebel1.Links.Add(34, 7, “http://202.38.64.10”);
链接标签事件
 最常用的事件是LinkClicked事件,在点击链接标签中超链接时就
触发这一事件。要打开相应这个事件的网页,使用来自
System.Diagnostics命名空间的Process.Start()方法。
Private void linkLabel1_LinkClicked(object sender,
LinkLabelLinkClickedEventArgs e)
{
Process.Start( “http://www.microsoft.com” );
}
这里Process.Start方法将打开浏览器浏览指定URL。


在链接标签对象中并没有内建的功能用于了解一个
链接是否被访问过。因为对控件的浏览操作实际上
是由LinkClicked事件处理器实现的,所以应该自行
编写代码来指定链接是否被访问。


通过在LinkClicked事件处理器中修改LinkVisited属性为
true,这就将根据链接的被访问状态来显示不同颜色。
如果不想为访问过的链接标签提供不同的颜色显示,只需
要取消对LinkVisited属性的设置即可。
列表框控件


用ListBox类封装,通常用于显示供选择的选项。
列表框属性




Items属性,保存列表框中显示的项,通过这个属性访问项或对这
些项进行操作。
MultiColumn属性,设置列表框是否可以多列显示(默认情况下为
一列显示)
ColumnWidth属性,指定每列的宽度。
SelectionMode属性,指定选择列表框中项的方式,默认情况下列
表框一次只能选择一项。属性值必须为枚举类型SelectionMode中
定义的值:




MultiExtended:允许一次选择多项并使用Shift和Ctrl键来帮助选择。
MultiSimple:允许一次选择多项,但只能通过单击来选择。
None:不能在列表框中选择。
One:一次只选择一项(默认)。

获取所选项的索引的属性



获取所选项的索引的引用




SelectedIndex属性,在列表框只允许选择一项时用来或许当前
所选择项的索引。没有选中的项时,属性返回一个-1。
SelectedIndices属性,在列表框允许选择多项时用来获取当前
所有选定项的索引集,这是一个SelectedIndexCollection类实
例。
SelectedItem属性,在列表框只允许选择一项时用来获取当前
所选择项。
SelectedItems属性,在列表框允许选择多项时用来获取当前选
择的多个项的集合,这是一个SelectedObjectCollection类实例。
Sorted属性,指定列表框是否可以对它包含的项自动排序。
TopIndex属性,设置或返回列表框中顶端的可见项。

列表框的方法

防止在更新列表框时重新绘制的方法:BeginUpdate和
EndUpdate。将修改操作放在这两个方法之间,在所有修改
完成后来刷新列表框。


SetSelected方法,用来进行选定或取消选定,它的参数为项
目索引和表示选择状态的Boolean值。


listBox1.BeginUpdate();
foreach(string s in mString)
{ listBox1.Items.Add(s); }
listBox1.EndUpdate();
listBox1.SetSelected(0, true);
对Items操作的方法

Add方法向列表框底部添加项。
listBox1.Items.Add(“A”);

Insert方法向指定位置添加项。





listBox1.Insert(0, newItem);
//索引不能小于0,不能大于当前项
目数
在Sorted属性为true时,Insert方法插入的项不能被正确排序。
AddRange方法添加多个项。
listBox1.Items.AddRange(new string[] {“A”,”B”});
或是listBox1.Items.AddRange(listBox2.Items);
Clear方法删除所有项目。listBox1.Items.Clear();
RemoveAt方法删除指定项
listBox1.Items.RemoveAt(index); //参数为索引
或是listBox1.Items.RemoveAt(object); //参数为对象,将
删除集合中符合参数对象的第一个对象

看两个删除的代码

ListBox.SelectedIndexCollection indices = listBox1.SelectedIndics;
int selected = indices.Count;
// (1)不能正确删除,(2)使用倒序删除
(1) if(indices.Count>0)
{
foreach( int index in indices)
listBox1.Items.RemoveAt(index);
}
(2) if(indices.Count>0)
{
for(int n=selected -1;n>=0;n--)
{
int index = indices[n];
listBox1.Items.RemoveAt(index);
}
}

列表框事件

SelectedIndexChanged事件和
SelectedValueChanged事件。



在列表框中的选择或取消项目时触发这两个事件。
一般使用这些事件来触发列表框的再次测试,确定有哪些
项在当前被选定。
DoubleClick事件,对列表框的项双击时触发这个事
件。一般用这个事件来显示一个关于该项信息的提
示窗体。
组合框控件



使用ComboBox类进行封装,由一个文本框和
一个下拉列表组成,可以在文本框中直接输入
也可以从下拉列表中选择选项。
组合框常用于这样的情况——便于从控件列表
框部分的多个选项中选择一个,但不需要占用
列表框所使用的空间。对组合框的行为风格可
以控制,如列表框是否显示或文本框是否可以
编辑。
组合框同时兼有列表框和文本框的功能,能使
用这两类控件具有的大部分操作。

组合框属性

Items、SelectedIndex、SelectedItem等属性,与列表框中
所讲述的相同。



与列表框不同的是,组合框中的列表不支持多项选择。
Text、MaxLength等属性,与文本框中所讲述的相同
DropDownStyle属性,指定组合框的显示风格。有三个可选
值,在枚举类型ComboBoxStyle中定义。



DropDown:默认值,可以在文本框中进行编辑并且列表框部
分一般隐藏,单击下拉按钮后显示。
DropDownList:只能单击下拉按钮显示下拉列表框来进行选择,
不能在文本框中编辑。
Simple:列表框总是可见,文本框可以编辑。





MaxDropDownItems属性,设置下拉列表框中最多能显示的
项的数目。
DropDownWidth属性,指定组合框下拉部分的宽度的像素数。
DroppedDown属性,指定是否显示下拉列表。
Height属性,指定简单的组合框的高度。
组合框方法


BeginUpdate和EndUpdate方法
Select和SelectAll方法,用来对文本框中的文字进行选择。

comboBox1.Select(1,5);
comboBox1.SelectAll();
//1表示起始位置,5表示长度
//选中文本框中的所有字符

组合框事件

大部分列表框和文本框事件都能在组合框中使用




SelectedIndexChanged事件,组合框中选择发生变化时触发这个事件。
TextChanged事件,文本框中文字改变时触发这个事件。
DropDown事件,显示下拉列表时触发这个事件。可以使用
这个事件对下拉列表框中的内容进行处理,如添加删除项等
等。
SelectionChangeCommitted事件,将更改委托给控件列表
框中的一个项目时触发。看个示例。

//下面代码确定用户在何时在组合框中选定一个项目
private void comboBox1_SelectionChangeCommitted(object sender, System.EventArgs e)
{
string message = string.Format(“The new selection is {0}”,
comboBox1.SelectedItem.ToString());
MessageBox.Show(message);
}

示例程序
逻辑分组控件





这类控件通常用于将窗体中的控件进行逻辑上
的分组,以使用户界面更具有条理性。其中一
些控件是类似与窗体的容器,比如面板控件。
分割条控件
分组框控件
面板控件
选项卡控件
分割条控件


使用Splitter类封装,主要用于在运行时调整停靠控件
的大小,通过它可以实现分割窗体的功能
使用分割条控件,首先把一个控件停靠在容器控件的
某一边上,然后把分割条控件停靠在相同的边上。运
行时,把鼠标指针移到分割条控件上,会变为调整大
小的形状,此时拖动分割条就可以调整控件大小。



控件添加顺序很重要,分割条只能改变在它之前添加的一个
控件,而且分割条和将被改变大小的控件必须停靠在容器的
同一边。
使用BorderStyle属性设置分割条的边框,使用
SplitPosition属性改变分割条的位置。
通常不处理分割条事件。
分组框控件


使用GroupBox类封装,它是一个容器控件,可以包
含其他控件,用于对控件进行逻辑分组。
在窗体设计器中,分组框控件中的控件可以作为一个
整体进行操作。把控件添加到分组框中的方法有两个:



直接从工具箱中拖动目标控件到分组框中
先把需要的控件剪切到剪贴板中,然后选中分组框控件并从
剪贴板中复制这些控件。
分组框属性



Text属性,为分组框设置标题
BackColor属性,设置分组框背景颜色
BackgroundImage属性,设置分组框背景图像



TabStop属性,分组框一般不接收焦点,它将焦点
传递给其包含控件中的第一个项;可以设置这个属
性来指示分组框是否接收焦点。
AutoSize属性,设置分组框是否可以根据其内容调
整大小。
AutoSizeMode属性,获取或设置启用 AutoSize 属
性时 分组框的行为方式。


属性值为 AutoSizeMode枚举值:GrowAndShrink,根据
内容增大或缩小;GrowOnly(默认),可以根据其内容
任意增大,但不会缩小至小于它的 Size 属性值 。
Controls属性,分组框中包含的控件的集合。可以
使用这个属性的Add,Clear等方法。

分组框事件




AutoSizeChanged事件,在AutoSize属性发生改变
时触发。
Click和DoubleClick事件。
TabStopChanged事件,在TabStops属性改变时触
发。
KeyUp/KeyPress/KeyDowm事件,当分组框拥有
焦点同时用户松开/按下某个键时触发。
面板控件


用Panel类封装,与分组框类似,也是一个容器控件。
它没有标题,但是可以和滚动条结合使用。
如下情况下经常使用面板控件




子控件要以可见的方式分开
提供不同的BackColor属性
使用滚动条以允许多个控件放置在同一个有限空间。
面板属性




类似GroupBox的属性
AutoScroll属性,设置面板滚动条是否可用,默认情况下是
禁用false
BorderStyle属性,设置面板边框风格,有None(默认),
FixedSingle,Fixed3D三种。
BackColor、BackgroundImage属性
选项卡控件


使用TabControl类封装。在这类控件中,通常在上部
有一些标签供选择,每个标签对应一个选项卡页面
TabPage。选中一个标签就会显示相应的页面而隐藏
其他页面。通过这个方式,可以把大量的控件放在多
个页面中,通过选项卡标签迅速切换。一个很常见的
例子是Windows系统的“显示属性”对话框。
选项卡属性

TabPages属性,这是一个选项卡页面的集合,可以通过它
对选项卡的标签项进行管理。


在属性窗口中单击TabPages属性右边的按钮,显示“TabPage
集合编辑器”对话框,通过它来添加删除选项卡页面和设置页
面属性。如图。
要为添加后的特定页面添加控件,通过选项卡控件的标签切换
到相应页面,再选中该页面,然后把控件拖动到页面中。


Alignment属性,指定选项卡的标签位于控件的什
么位置,是一个TabAlignment枚举类型,有Top
(默认),Bottom,Left,Right四个值。
Appearance属性,指定标签的外观,有三种风格:
Buttons、FlatButtons、Normal(默认)。


只有当标签位于顶部时,才可以设置FlatButtons风格;位
于其他位置时,将显示为Buttons。
MultiLine属性,指定是否可以显示多行标签。


默认情况为单行显示,在标签超出选项卡可视范围时自动
使用箭头按钮来滚动标签。
当把标签定位于选项卡的左边或右边时,MultiLine属性自
动为true。


ItemSize属性,指定标签的大小。
SizeMode属性,指定标签是否自动调整大小来填充标签行。
枚举类型TabSizeMode定义了三种取值。






Normal:根据每个标签内容调整标签的宽度
Fixed:所有标签宽度相同
FillToRight:调整标签宽度,使其填充标签行(只有在多行标
签的情况下进行调整)
TabCount属性,指定控件中所包含的标签的数量。
SelectedIndex属性,当前所选中标签的索引。若没有选中项,
返回-1。
SelectedTab属性,当前所选中标签的引用。若没有选中项,
返回null。

管理TabPages属性的方法

可以提供索引访问





添加TabPage对象:Add或者AddRange方法。
删除TabPage对象:Remove方法(参数为TabPage引用)
或RemoveAt方法(参数为索引值)
清除所有的TabPage对象:Clear方法。
SelectedIndexChanged事件



tabControl1.TabPages[0].Text = “ 背景 ”;
改变当前选择的标签时触发这个事件
可以在这个事件的处理中根据程序状态来激活或禁止相应页
面的某些控件。
示例程序
滚动类控件



滚动条控件
进度条控件
跟踪条控件
滚动条控件



用ScrollBar基类封装,使用时有两类:水平滚动条
HScrollBar和垂直滚动条VScrollBar,都派生于
ScrollBar类。
多数时候不用明确地创建滚动条,许多Windows窗体
都支持自动滚动,它们都派生于ScrollableControl类,
这个类为滚动条提供内建支持,允许以设置属性的方
式简单地完成滚动条功能。
滚动条属性



Value属性,指定滚动条中滑块的位置。
Minimum属性,指定Value属性的最小值。
Maximum属性,指定Value属性的最大值。



SmallChange属性,设置在滚动条端点的某个箭头
上每单击一次鼠标,Value属性减少或增加的量。
LargeChange属性,设置在滚动条端点和滑块之间
每单击一次鼠标,Value属性减少或增加的量。
滚动条事件

ValueChanged事件和Scroll事件,通过捕捉该事件
来对滚动条的操作进行相应动作。
进度条控件


使用ProgressBar类封装,使用矩形方块从左到右显
示某一过程的进度情况,提供一个与任务状态相关的
可视反馈,通常用于有一定时间的任务。
进度条属性和方法






Maximum属性,读取或设置进度条的最大计数值。默认为
100。
Minimum属性,读取或设置进度条的最小计数值。默认为0。
Value属性,读取或设置进度条的当前计数值。
Step属性,调用PerformStep方法时增加进度条的幅度值。
PerformStep方法,用Step属性指定的数量修改控件的值。
Increment方法,用这个方法参数指定的数量修改控件的值。
跟踪条控件



用TrackBar类封装,可用于制作仿真滑杆。在
许多视频软件中表示进程的滑杆就是用这一控
件产生的。
跟踪条属性(见下表)
跟踪条事件


ValueChanged事件,在滑杆移动时进行检测
Scroll事件,可以根据TrackBar中的变化连续操作
其他控件。
属性
功能
LargeChange
设置按下PageUp或PageDown或者单击滑杆两侧时滑杆移动的点数
SmallChange
设置按下左右箭头时滑杆移动的点数
Maximum
读取或设置最后点的位置值
Minimum
读取或设置第一点的位置值
Orientation
TickStyle
TickFrequency
Value
设置滑杆时水平显示还是垂直显示
设置控件上点号的样式(滑杆上方显示,下方显示,同时显示或不显示)
设置控件上显示的点号的数目
读取或设置滑杆的当前值
工具栏和状态栏

工具栏控件通常用于提供访问菜单命令的快捷
方式,状态栏控件通常用于显示程序的状态信
息。在一个完整的Windows应用程序中,这两
种控件必不可少。
工具栏控件


使用ToolStrip封装(VS.2003中为ToolBar)。可以将
一些常用的控件单元作为子项放在工具栏中,通过各
个子项与应用程序发生联系。通常出现在窗体的顶部。
在工具箱中选择ToolStrip控件放置到设计窗体中,默
认状态下在最左侧会有一个下拉按钮,有两种方法添
加设置工具栏子项。



直接单击下拉按钮在下拉列表中选择需要的子项,然后对该
子项进行属性设置。
选中工具栏,右击选择属性命令,单击Items后的按钮弹出
“项集合编辑器”对话框,在其中选择子项和设置属性。
VS.2003的工具栏使用方法不大一样,请参看参考书1的第
17章第1小节。
工具栏控件的常用属性
属性
BackgroundImage
BackgroundImageLayout
Items
TabIndex
ShowItemToolTips
功能
设置背景图片
设置背景图片的显示对齐方式
设置工具栏上所显示的子项
控件名相同时,用来产生一个数组标识号
设置是否显示工具栏子项上的提示文本
Text
设置文本显示内容
TextDirection
设置文本显示方向
ContextMenuStrip
设置工具栏所指向的弹出菜单
AllowItemReorder
是否允许改变子项在工具栏中的顺序。


ToolStrip 的子项类型可以为 ToolStripButton、
ToolStripComboBox、ToolStripSplitButton、
ToolStripLabel、ToolStripSeparator、
ToolStripDropDownButton、ToolStripProgressBar 和
ToolStripTextBox等
工具栏控件的各个子项使用与设置与前面见过的基本
一致。Separator控件主要提供一个间隔;SplitButton、
DropDownButton常用的属性是DropDownItems,使
用方法:在该控件属性窗口中单击这个属性后带省略
号的按钮,弹出“项集合编辑器”,在左侧下拉列表
中选择合适的子项添加,在右边设置相应项的属性。

这里的子项属性有:





工具栏控件的事件




Name:子项名称;
Text:子项显示文本;
ToolTipText:将鼠标放在子项上时显示的提示文本。要使用这
个属性,必须将工具栏的ShowItemToolTips属性设置为true;
ImageIndex:子项使用的图标
ItemClicked事件,单击工具栏上的一个子项时触发执行。
Clicked事件,单击工具栏本身时执行。
DoubleClick事件,双击工具栏时执行。
演示程序
状态栏控件


使用StatusStrip类封装(VS.2003中为StatusBar)。
状态栏一般位于窗体的底部,用于显示系统的一些状
态,比如大小写情况、日期时间等。在状态栏中可以
包含文本、图像、下拉按钮等子项。

在状态栏中添加子项的操作类似于工具栏,常用的子项有
StatusLabel、SplitButton、DropDownButton和ProgressBar
等


子项添加方法两种:直接单击设计界面的下拉按钮选择需要的
子项,然后设置其属性;或者是使用“项集合编辑器”对话框。
状态栏常用的属性和事件类似于工具栏。
视图控件

列表视图


树视图


以列表的形式显示信息
用于显示层次结构的信息
数据网格

用于显示数据库数据信息
列表视图


用ListView类封装,与列表框类似都是显示一
些项的列表的控件,但功能更强大。
列表视图中可以使用4中不同方式显示列表项:
大图标、小图标、列表和详细信息模式,可以
在应用程序中选择使用任何一种或是所有的方
式。

列表视图属性

View属性,指定列表视图的显示模式,属性值在枚
举类型View中指定




LargeIcon,显示大图标,并在图标的下面显示标题。
SmallIcon,显示小图标,并在图标的右边显示标题。
List,每项包含一个小图标和一个标题,并使用列来组织
列表项,但每列都没有表头。
Details,使用报表的形式显示列表项,每项占一行。最左
边的一列显示该项的小图标和标题,其他列显示该项的子
项。这种方式还可以包含一个表头,显示每列的标题,可
以在运行时通过表头来改变列的宽度。

HeaderStyle属性。在详细信息模式下,列表视图会显示表
头。使用这个属性来设置表头的不同风格,取值由枚举类型
ColumnHeaderStyle设定




LargeImageList属性和SmallImageList属性





Clickable,显示表头,并且它可以响应单击事件。
Nonclickable,显示表头,但它不响应单击事件。
None,不显示表头。
在大图标模式下,显示LargeImageList中的图像列表;
在其他三个模式下,显示SmallImageList中的图像列表。
MultiSelect属性,设置列表视图是否可以选择多项。默认为
只能选择一项。
Sorting属性,指定是否对列表项进行排序。
Scrollable属性,指定是否显示滚动条。

为列表视图添加列表头和列表项

添加列表头(ColumnHeader类)


在属性窗口中单击Columns属性旁带省略号的按钮,打开
“ColumnHeader集合编辑器”对话框。单击其中的“添
加”按钮添加一个新的列表头,并在右边可以设置它的属
性:Name设置表头名称,Text设置表头标题,Width属性
设置列宽度,TextAlign属性设置列的对齐方式等等。
使用代码添加的例子
listView1.Column.Add(“Drive”,100, HorizontalAlignment.Left);
其中参数分别表示列名称,列宽度和列对齐方式。

添加列表项(ListItem类)



单击列表视图属性窗口中Items属性旁的按钮,打开
“ListViewItem集合编辑器”对话框。类似添加列表头的
操作添加列表项。其中ImageIndex设置列表项对应的图
像索引,Text设置列表项的标题。
在包含多列的情况下,要为列表项添加子项。单击对话框
中SubItems属性旁的按钮,打开“ListViewSubItem集合
编辑器”对话框,在其中添加子项。其中第一个子项的标
题就是列表项的标题。
使用代码添加的例子
listView1.Items.Add( listViewItem1 );
其中listViewItem1表示一个列表项对象实例。

Items属性,包含列表视图中的所有项。可以对其使
用索引访问,得到其中的单个项。




每个列表项具有SubItems属性来访问它的各个子项。比如,
listView1.Items[0].SubItems[0]。
在插入列表项时,列表项本身对应列表视图的第一列,它的
子项对应视图的其他各列。除了详细信息模式外,其他的显
示模式都只显示第一列。
SelectedIndices属性和SelectedItems属性,获取当
前选择的项。
LabelEdit属性,设置在运行时是否可以改变列表项的
标题。

列表视图的方法




BeginUpdate和EndUpdate
Clear
GetItemAt方法,返回指定位置(x,y)的列表项。
列表视图的事件


ColumnClick事件,单击列表头时触发这个事件。
可以在这个事件的处理过程中编写代码对列表视图
进行排序。
SelectedIndexChanged事件,对列表视图中项的
选择发生改变时触发这个事件。
树视图


用TreeView类封装,主要用于显示层次结构的数据信
息。一般由项或节点构成,节点还可以包含子节点,
可以展开或收起节点,并且每个节点都可以包含标题
和图标。
添加树视图节点(TreeNode类)


单击属性窗口的Nodes属性旁的按钮,打开“TreeNode编辑
器”对话框。在其中单击“添加根”按钮添加一个根节点;
选中树中已有的一个节点,单击“添加子节点”按钮可以为
这个节点添加一个子节点;删除按钮用来删除选择的节点。
树视图节点的一些常用属性(见下表)
属性
FirstNode
FullPath
Index
描述
返回该节点的第一个节点
返回从根节点到该节点的完整路径
返回该节点在其父节点中的索引
IsExpanded
指定该节点是否处于展开状态
IsSelected
指定该节点是否处于选择状态
IsVisible
指定该节点是否可见
LastNode
返回该节点最后一个子节点
NextNode
返回该节点的下一个兄弟节点
Nodes
该节点的所有子节点的集合
属性
Parent
PreNode
Text
TreeView

描述
返回该节点的父节点
返回该节点的前一个兄弟节点
指定该节点的标题
返回包含该节点的树视图
对TreeNode类节点的操作方法




Collapse:收起节点
Expand或ExpandAll:展开节点
GetNodeCount:返回子节点数目
Remove:在树视图中删除该节点及其子节点

树视图的方法




BeginUpdate和EndUpdate
CollaspeAll和ExpandAll:收起或展开树视图的所有节点
GetNodeCount:可以返回根节点或所有节点的数目。
树视图事件






BeforeCollaspe事件,当要收起节点时触发这个事件。
AfterCollaspe事件,当节点收起后触发这个事件。
BeforeExpand事件,展开一个节点时触发这个事件。
AfterExpand事件,节点展开后触发这个事件。
BeforeSelect事件,选择一个节点时触发这个事件。
AfterSelect事件,节点被选择后触发这个事件。

列表视图和树视图的示例程序

数据网格(DataGridView)控件,在数据库编
程应用中介绍。
其他控件



定时器控件
日历控件
时间选择控件
定时器控件



Timer类封装,主要用于计时。通过计时处理可以实
现各种复杂的动作,例如延时、动画等,以可以指定
间隔时间来触发事件。
定时器控件在运行时不可见,在窗体设计器中在下方
显示。
定时器常用属性



Enable属性,定时器事件是否处于运行状态。默认情况下为
false。
Interval属性,指定定时器控件的时间间隔,单位为毫秒。
定时器常用方法


Start方法,启动时钟,即把Enable属性设为true
Stop方法,停止时钟,把Enable属性设为false

定时器常用事件


Tick事件,在时钟处于运行状态并且指定的时间间
隔到达时触发这个事件。可以通过捕捉该事件来进
行代码操作
定时器的属性、方法和事件不是很多,但是在
动画制作和定期执行某个操作等方面有着重要
的作用。
日历控件


MonthCalendar类封装,显示一个日历页面,
可以选择一个或多个日期。使用控件顶部的箭
头按钮可以调整显示的月份。
日历控件的属性


MaxSelectionCount属性。单击日历页面的日期就
可以在日历控件中选择一个日期,默认情况下最多
允许选择7天,可以通过修改这个属性来改变这个
天数限定。
设置或获取当前所选日期信息的一些属性

SelectionStart,一个DateTime值,指定第一个选择的日
期



SelectionRange类用于模拟开始日期和结束日期之
间的关系,它具有两个属性



SelectionRange,一个SelectionRange对象,代表控件中
所选择的日期
SelectionEnd,一个DateTime值,指定最后一个选择的
日期
Start,一个DateTime值,代表范围内的第一天;
End,一个DateTime值,代表范围内的最后一天。
控制日历控件允许的时间日期的属性


MinDate,最早的有效日期
MaxDate,最晚的有效日期
下面代码将日历控件限制在两周时间,不允许滚动到其他月份,
也不允许选择两周外的日期
monthCalendar1.MinDate = DateTime.Now;
monthCalendar1.MaxDate= DateTime.Now.AddDays(14.0);




CalendarDimensions属性,设置日历网格的大小。这是作为
一个Size值传递的,比如
monthCalendar1.CalendarDimensions =new Size(2,3);
创建一个日历,以3行2列的格式显示月份。
ShowToday属性,指定日期是否可以显示在日历的底部,默
认值为true。
ShowTodayCircle属性,指定是否在当前日期周围画一个圈,
默认为true。




TodayDate属性,设置控件显示的日期,默认情况
下显示系统日期。
TodayDateSet属性,判定是否设置了TodayDate日
期。如果是则返回属性值为true。
FirstDayOfWeek属性,指定日历中显示的每周的第
一天是星期几。使用Day枚举值,Default(默认,
显示星期天为第一天)、Sunday~Saturday。
ShowWeekNumbers属性,指定是否在日历中显示
周数,默认为false。
时间选择控件


DateTimePicker类封装,在一个类似于下拉组
合框控件的文本框中显示当前日期。与日历控
件不同的是,时间选择控件一次只显示一个月。
时间选择控件属性

Value属性,是一个DateTime值,指定控件所显示
的日期。


Value属性具有一些只读特性,可用于获取时间和日期单
元
Value.Year, Month, Day, DayOfWeek, Hour, Minute,
Second等

控制时间选择控件外观的两个属性



ShowCheckBox属性,指定是否在这个控件中显示一个复选框。
ShowUpDown属性,指定是否用一个可以滚动时间和日期的各
个单元的Up-Down控件代替向下箭头。
Format属性,控制日期时间显示格式。取值由枚举类型
DateTimePickerFormat指定。




Long,长格式显示(默认)。如,星期三,11月27日,2006年
Short,短格式显示。如,11/27/2006
Time,标准格式显示时间。如,10:00:00 AM。这个格式将
ShowUpDown属性设为true(这个属性为false时,可以修改的
时日期而不是时间)。
Custom,用CustomFormat属性指定的自定义格式显示日期和
时间。

CustomFormat属性,指定日期和时间在控件的本
本部分显示的方式,是一个字符串。


自定义格式字符串的意义请看下表
下面代码设置时间选择控件,用自定义格式显示时间日期
dateTimePicker1.Format =
DateTimePickerFormat.Custom;
dateTimePicker1.CustomFormat =
“HH:mm:ss MMMM d, yyyy”;
自定义格式字符串
值
详细说明
d
一位或者两位数字的日期
dd
两位数字显示日期。如需要,前面添一个零
ddd
一周中的某一天用3字符缩写
dddd
一周中的某一天的全名
h
用12小时格式显示一位或两位数字的小时
hh
用12小时格式显示两位数字的小时。如需要,前面添一个零
H
用24小时格式显示一位或两位数字的小时
HH
用24小时格式显示两位数字的小时。如需要,前面添一个零
m
一位数字或两位数字的分钟
mm
用两位数字显示分钟。如果需要,在前面添一个零
M
用一位或两位数字显示月份
MM
用两位数字显示月份。如果需要,在前面添一个零
MMM
月份的3字母缩写
MMMM
月份全名
s
用一位或两位数字显示秒
ss
用两位数字显示秒。如果需要,在前面添一个零
T
指示AM或者PM的一个字母(A或P)
tt
指示AM或者PM的两个字母
Y
一年的最后一位数字
Yy
一年的最后两位数字
yyyy
年的全名
小结


其他的一些控件将在后续章节使用中介绍
Visual C# .NET中的控件很多,学习和使用中
一定注意对比和举一反三,通过这章的学习,
应该能明确各个控件的功能,熟练使用“属性”
窗口来设置属性,利用代码控制属性值和学会
一些函数方法的使用,同时在接触一个新的控
件时能懂得怎么将它使用起来。