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中的控件很多,学习和使用中
一定注意对比和举一反三,通过这章的学习,
应该能明确各个控件的功能,熟练使用“属性”
窗口来设置属性,利用代码控制属性值和学会
一些函数方法的使用,同时在接触一个新的控
件时能懂得怎么将它使用起来。