Windows应用程序常用控件
1 控件概述
窗口是由控件有机构成的,所以熟悉控件是进行合理、有效的程序开发的重要前提。Windows应用程序中的控件分为常用控件和高级控件。
1.1 控件的分类及作用
常用控件可以分为文本类控件、选择类控件、分组控件、菜单控件、工具栏控件以及状态栏控件。Windows应用程序控件的基类是位于System.Windows.Form命名空间的Control类。Control类定义了控件类的共同属性、方法和事件,其他控件类都直接或间接的派生自这个基类。
常用控件的作用
控件分类 | 作用 |
---|---|
文本类控件 | 文本类控件可以在控件上显示文本 |
选择类控件 | 主要为用户提供选择的项目 |
分组控件 | 使用分组控件可以将窗体中的其他控件进行分组处理 |
菜单控件 | 为系统制作功能菜单,将应用程序命令分组,使他们更容易访问 |
工具栏控件 | 提供了主菜单中常用的相关工具 |
状态栏控件 | 用于显示 窗体上的对象的相关信息,或者可以显示应用程序的信息 |
1.2 控件的命名规范
控件的命名规范
控件名称 | 开头缩写 |
---|---|
TextBox | txt |
Button | btn |
ComboBox | cbox |
Label | lab |
DataGridView | dgv |
LitBox | lb |
Timer | tmr |
CheckBox | chb |
LinkLabel | llbl |
RichTextBox | rtbox |
CheckedListBox | clbox |
RadioButton | rbtn |
NumbericUpDown | nudown |
Pamel | pl |
GroupBox | gbox |
TabControl | tcl |
ErrorProvider | epro |
ImageList | ilist |
HelpProvider | hpro |
ListView | lv |
TreeView | tv |
PictureBox | pbox |
NotifyIcon | nicon |
DateTimePicker | dtpicker |
MonthCalendar | mcalen |
ToolTip | ttip |
1.2 控件的相关操作
对控件的相关操作包括添加控件、对齐控件、锁定控件和删除控件等。
2.1 添加控件
对控件的操作,可以通过“在窗体上绘制控件”、“将控件拖拽到窗体上”和“以编程方式向窗体添加空间”这3中方式添加空间。
- 在窗体上绘制控件
在工具箱中单击要添加到窗体的控件,然后在该窗体上单击希望控件左上角所处的位置,然后拖动到希望控件右下角所处位置,控件即按指定的位置和大小添加到窗体中。
- 将控件拖拽到窗体上
在工具箱中单击所需控件并将其拖拽到窗体单行的指定位置。
- 以编程方式向窗体添加空间
使用new关键字实例化要添加控件所在的类,然后将实例化的控件添加到窗体中。
实例:
//通过Button按钮的Click时间添加一个TextBox控件
private void button_Click(object sender.System.EventArgs e)
{
TextBox myText = new TextBox();
myText.Location = new Point(25,25);
this.Controls.Add(myText);
}
2.2 对齐控件
选定一组控件,这些控件需要对齐。在执行对齐之前,首先选定主导控件(首先被选定的控件就是主导控件)。控件组的最终位置取决于主导控件的位置,再选择菜单栏中的“格式”/“对齐”命令,然后选择对齐方式。
对齐方式 | 实现效果 |
---|---|
左对齐 | 将选定控件沿它们的左边对齐 |
居中对齐 | 将选定控件沿它们的中心点水平对齐 |
右对齐 | 将选定控件沿它们的右边对齐 |
顶端对齐 | 将选的控件沿它们的顶边对齐 |
中间对齐 | 将选的控件沿它们的中心点垂直对齐 |
底部对齐 | 将选定的件沿它们的底边对齐 |
2.3 锁定控件
在控件的“属性”窗口中,单击Locked属性并选择true即可锁定控件。此外,还可以右击控件,在弹出的快捷菜单中选择“锁定控件”命令。如果要锁定窗体上所有的控件,可以在选择菜单栏中的“格式”/“锁定控件”命令。
完成窗体设置后。为了避免误操作而改变窗体控件的位置,可以用控件锁定的方法对控件进行定位。
2.4 删除控件
删除控件的方法非常简单,可以在控件上单击鼠标右键选择删除命令、或者选中控件按下Delete按键。
3 文本类控件
文本类控件主要包括标签控件(Label控件)、按钮控件(Button控件)、文本框控件(TextBox控件)和有格式文本控件(Rich TextBook控件)。
3.1 标签控件(Label控件)
标签控件(Label控件)主要用于显示用户不能编辑的文本,标识窗体上的对象。也可以通过编写代码来设置要显示的文本信息。如果要添加一个标签控件,系统会自动创建标签控件的一个对象。
- 设置标签文本
① 通过标签控件的属性面板设置
直接在标签控件的属性面板中设置Text属性的值
② 通过代码设置
label1.Text = “你好~”;
- 显示/隐藏控件
① 通过标签控件的属性面板设置
直接在标签控件的属性面板中设置Visible属性的值,属性的值为True则显示控件,为False则隐藏控件。
② 通过代码设置
label1.Visible = true;
3.2 按钮控件(button控件)
按钮控件(button控件)允许用户通过单击来执行操作。按钮控件(button控件)既可以显示文本,也可以显示图像。
- 响应按钮的单击事件
单击按钮控件时将引发Click事件,执行Click事件中的代码。
- 将按钮设置为窗体的“接受”按钮
通过设置窗体的AcceptButton属性,可以设置窗体的“接受”按钮。如果设置了此按钮,则用户每次按下Enter键都相当于单击该按钮。
实例:
private void Form1_Load(object sender,EventArgs e)
{
this.AcceptButton = button1;
}
private void button1_Click(object sender,EventArgs e)
{
MessageBox.Show("引发了接受按钮");
}
- 将按钮设置为窗体的“取消”按钮
通过设置窗体的CancelButton属性,可以设置窗体的“取消”按钮。如果设置该属性,则用户每次按下Esc键都相当于单击了该按钮。
实例:
private void Form1_Load(object sender,EventArgs e)
{
this.CanecelButton = button1;
}
private void button1_Click(object sender,EventArgs e)
{
MessageBox.Show("单击了取消按钮");
}
说明:
如果想实现鼠标移入和移出按钮时,改变按钮的样式或字体样式,可以用OnMouseEnter(在鼠标指针进入控件时发生)和OnMouseLeave(在鼠标离开控件的可见部分时发生)时间来实现。
3.3 文本框控件(TextBox控件)
文本框控件(TextBox控件)用于获取用户输入的数据或者显示文本。文本框控件通常用于可编辑文件,也可以使其成为只读控件。文本框可以显示多个行,对文本换行使其符合控件的大小。
- 创建只读文本框
① 通过标签控件的属性面板设置
直接在标签控件的属性面板中设置ReadOnly的属性,true为可编辑,false为不可编辑。
② 通过代码设置
textBox1.ReadOnly= “true”;
- 创建密码文本框
① 通过标签控件的属性面板设置
直接在标签控件的属性面板中设置PasswordChar的属性或UseSystemPasswordChar。
UseSystemPasswordChar属性:是否为密码框文本,True则为密码框文本且字符默认显示为“*”。
PasswordChar属性:使用属性值代替文本框内明文的符号。
② 通过代码设置
textBox1.PasswordChar= “*”;
textBox1.UseSystemPasswordChar= true;
说明:
在TextBox控件中可以通过BorderStyle属性获取或设置文本框边框类型,其值为None(无边框)、FixedSingle(单行边框)、Fixed3D(三维边框)。
- 创建多行文本框
① 通过标签控件的属性面板设置
直接在标签控件的属性面板中设置Multiline的属性,true为可允许多行输入。
② 通过代码设置
textBox1.Multiline= “true”;
- 突出显示文本框中的文本
SelectionStart属性设置选择的起始位置(如果起始位置在回车符和换行符之间,选择长度将自动加1。该属性值不能为负数)
SelectionLength属性设置选择文本的长度
① 通过代码设置
textBox1.SelectionStart = 5;
textBox1.SelectionLength = 5;
- 响应文本框的文本更改时间
当文本框中的文件发生更改时,将会引发文本框的TextChanged时间。
3.4 有格式文本控件(Rich TextBox控件)
有格式文本控件(Rich TextBox控件)用于显示、输入和操作带有格式的文本。RichTextBox控件除了执行TextBox控件的所有功能之外,还可以显示字体、颜色和链接,从文本加载文本和嵌入的图像,撤销和重复编辑操作以及查找指定的字符。
- 在Rich TextBox控件中显示滚动条
通过RichTextBox控件的Multiline属性,可以控制控件中是否显示滚动条。滚动条分为水平滚动条和垂直滚动条,通过ScrollBars属性可以设置如何显示滚动条。
ScrollBars属性的属性值及说明
属性值 | 说明 |
---|---|
Both | 只有当文本超过控件的宽度和长度时,才显示水平滚动条或垂直滚动条,或俩个滚动条都显示 |
None | 从不显示任何滚动 |
Horizontal | 只有当文本超过控件的宽度时,才显示水平滚动条。必须将WordWrap属性设置为false,才会出现这种情况。 |
Vertical | 只有当文本超过控件的高度时,才显示垂直滚动条 |
ForcedHorizontal | 当WordWrap属性设置为false时,显示水平滚动条。在文本未超过控件的宽度时,该滚动条显示为浅灰色。 |
ForcedVertical | 始终显示垂直滚动条。在文本未超过控件的长度时,该滚动条显示为浅灰色。 |
ForcedBoth | 始终显示垂直滚动。当WordWrap属性设置为false时,显示水平滚动条。在文本未超过控件的宽度或长度时,俩个滚动条均显示为浅灰色。 |
注意:
当WordWrap(指示多行文本框控件在必要时是否自动换行到下一行的开始)属性为true时,则不论ScrollBars属性的值是什么,都不会显示水平滚动条。
- 在Rich TextBox控件中设置字体属性
通过SelectionFont属性设置Rich TextBox控件中字体的字体系列、大小和字样。通过SelectColor属性设置字体的颜色。
实例:
private void Form1_Load(object sender, EventArgs e)
{
richTextBox1.Multiline = true; //实现多行显示
richTextBox1.ScrollBars = RichTextBoxScrollBars.Vertical; //只显示垂直滚动条
richTextBox1.SelectionFont = new Font("楷体", 12, FontStyle.Bold); //楷体 大小12 粗体
richTextBox1.SelectionColor = System.Drawing.Color.Blue; // 蓝色
}
效果:
- 将Rich TextBox控件显示为超链接样式
Rich TextBox控件可以将Web链接显示为彩色或下划线形式。可以编写代码,在单击链接时打开浏览器窗口,该窗口中显示的连接中本文指定的网站。通过Text属性,设置控件中含有超链接的文本。然后在控件的LinkClicked事件中编写事件处理程序,将所需的文本发送到浏览器。
注意:
在Rich TextBox控件的文本中设置超链接是,必须用“http://”开头,且http的前面不能有数字和字母,只能是空格或汉字,否则将无法实现超链接操作。
实例:
private void Form1_Load(object sender, EventArgs e)
{
richTextBox1.Multiline = true; //实现多行显示
richTextBox1.ScrollBars = RichTextBoxScrollBars.Vertical; //只显示垂直滚动条
richTextBox1.Text = "欢迎登陆 https://blog.youkuaiyun.com/qq_41525263?spm=1000.2115.3001.5343 ShiMingSoft ";
}
private void richTextBox1_LinkClcked(object sender, LinkClickedEventArgs e)
{
System.Diagnostics.Process.Start(e.LinkText);
}
效果:
- 在RichTextBox控件中设置段落格式
RichTextBox控件具有多个用于设置所显示的文本格式的选项。可以通过设置SelectionBullet属性将选定的段落设置为项目符号列表的格式。也可以通过SelectionIndent和SelectHangingIndent属性设置段落向对于控件的左右边缘进行缩进。
实例:
private void Form1_Load(object sender, EventArgs e)
{
richTextBox1.Multiline = true; //实现多行显示
richTextBox1.ScrollBars = RichTextBoxScrollBars.Vertical; //只显示垂直滚动条
richTextBox1.SelectionIndent = 8;//控件中数据的左边缘与控件左边缘距离为8
richTextBox1.SelectionRightIndent = 12;//控件中数据的右边缘与控件右边缘距离为12
}
效果 :
实例:
private void Form2_Load(object sender, EventArgs e)
{
richTextBox1.Multiline = true; //实现多行显示
richTextBox1.ScrollBars = RichTextBoxScrollBars.Vertical; //只显示垂直滚动条
richTextBox1.SelectionBullet = true; //使控件中的内容以项目符号列表的格式排列
}
效果 :
4 选择类控件
选择类控件主要包括下拉组合框控件(ComboBox控件)、复选框控件(CheckBox控件)、单选按钮控件(RadioButton控件)、数值选择控件(NumbericUpDown控件)和列表控件(ListBox控件)。
4.1 下拉组合框控件(ComboBox)
下拉组合框控件用于在下拉组合框中线束数据。下拉组合框控件主要由俩部分组成:第一部分是一个允许用户输入列表项的文本框;第二部分是一个列表框,他显示一个选项列表,用户可以从中选择一项。
说明:
ComboBox显示与一个ListBox组合的文本框编辑字段,使用户可以从列表中选择项,也可以输入新文本。
- 创建只可以选择的下拉框
通过设置控件的DropDownStyle属性,可以将ComboBox控件设置为可以选择的下拉框。DropDownStyle属性有三个属性值,这三个属性值对应不同的样式。
Simple:使ComboBox控件的列表部分总是可见的。
DropDown:DropDownStyle属性的默认值,使用户可以编辑ComboBox控件的文本框部分,只有单击右侧的箭头才能显示列表部分。
DropDownList:用户不能编辑ComboBox控件的文本框部分,呈现下拉框样式。
实例:
//设置DropDownStyle属性
comboBox1.DropDownStyle = ComboBoxStyle.DropDownList;
comboBox1.Items.Add("内一科");
comboBox1.Items.Add("内二科");
comboBox1.Items.Add("骨科");
comboBox1.Items.Add("儿科");
效果:
- 选中下拉组合框中可编辑部分的所有文本
通过控件的SelectAll方法,可以选择ComboBox控件的可编辑部分的所有文本。在使用SelectAll方法之前,要将控件的DropDownStyle属性设置为DropDown,这样才能在文本框部分对选择项进行编辑。
语法 :
public void SelectAll()
实例:
private void Form1_Load(object sender, EventArgs e)
{
//将控件的DropDownStyle属性设置为DropDown,选择下拉列表中的某项,然后单击算则按钮调用控件的SelectAll方法。当再次查看下拉列表时,可以看到编辑文本框中的内容已经被选中
comboBox1.DropDownStyle = ComboBoxStyle.DropDown;
comboBox1.Items.Add("内一科");
comboBox1.Items.Add("内二科");
comboBox1.Items.Add("骨科");
comboBox1.Items.Add("儿科");
}
private void button1_Click(object sender, EventArgs e)
{
comboBox1.SelectAll();
}
效果:
- 响应下拉组合框的选项值更改时间
当下拉列表的选项发生改变时,将会引发控件SelectedValueChanged事件。当SelectedValue属性更改时才会触发SelectedValueChanged事件。
实例:
private void Form1_Load(object sender, EventArgs e)
{
//下拉列表的选择发生改变时,触发SelectedIndexChanged事件更改label的值
comboBox1.DropDownStyle = ComboBoxStyle.DropDown;
comboBox1.Items.Add("内一科");
comboBox1.Items.Add("内二科");
comboBox1.Items.Add("骨科");
comboBox1.Items.Add("儿科");
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
label1.Text = comboBox1.Text;
}
效果:
4.2 复选框控件(CheckBox控件)
复选框控件(CheckBox控件)用来表示是否选取了某个选项条件。常用于为用户提供具有是否或真假的选项。
- 判断复选框是否选中
通过在控件的Click时间中判断控件的CheckState属性,来判断复选框是否被选中。CheckState属性的返回值时Checked或Unchecked,返回值Checked表示控件在选中状态,而返回值Unchecked表示控件已经取消选中状态。
说明:
CheckBox控件指示某个特定条件是处于打开状态还是处于关闭状态。它常用于为用户提供是否或真假选项。可以成组使用复选框控件以显示多重选项,用户可以从中选择一项或多项。
例:
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
//在控件的Click事件中判断手否被选中,如果是弹出相应提示
if (checkBox1.CheckState == CheckState.Checked)
{
MessageBox.Show("checkBox控件被选中");
}
else
{
MessageBox.Show("checkBox控件选择被取消");
}
}
效果:
- 响应复选框的选中状态更改事件
当控件的选中状态发生改变时,将会引发控件的CheckStateChanged事件
实例:
private void checkBox1_CheckStateChanged(object sender, EventArgs e)
{
MessageBox.Show("checkBox控件选择状态发生改变");
}
效果:
4.3 单选按钮控件(RadioButton)
单选按钮控件(RadioButton)为用户提供俩个或多个互斥选项组成的选项集。当用户选中某单选按钮时,同一组中的其他单选按钮不能同时选中。
说明:单选按钮必须在同一组中才能实现单选效果。
- 判断单选按钮是否选中
实例:
private void Form1_Load(object sender, EventArgs e)
{
//通过俩个RadioButton控件的Click事件,判断控件是否为选中状态
radioButton1.Checked = false;
radioButton2.Checked = false;
}
private void radioButton1_CheckedChanged(object sender, EventArgs e)
{
if (radioButton1.Checked == true)
{
MessageBox.Show("radioButton1控件被选中");
}
}
private void radioButton2_CheckedChanged(object sender, EventArgs e)
{
if (radioButton2.Checked == true)
{
MessageBox.Show("radioButton2控件被选中");
}
}
效果:
- 响应单选按钮选中状态更改事件
当控件的选中状态发生改变时,会引发控件的CheckedChanged事件。
实例:
private void Form1_Load(object sender, EventArgs e)
{
radioButton1.Checked = false;
}
private void radioButton1_CheckedChanged(object sender, EventArgs e)
{
MessageBox.Show("radioButton1控件选中状态被更改");
}
private void button1_Click(object sender, EventArgs e)
{
radioButton1.Checked = true;
}
private void button2_Click(object sender, EventArgs e)
{
radioButton1.Checked = false;
}
效果:
4.4 数值选择控件(NumericUpDown控件)
数值选择控件(NumericUpDown控件)是一个显示和输入数值的控件。该控件提供一对上下箭头,用户可以单击上下箭头选择数值,也可直接输入。该控件的Maximum属性可以设置数值的最大值,如果输入的数值大于这个属性的值,则自动把数值改为设置的最大值。该控件的Minimum属性可以设置数值的最小值,如果输入的数值小于这个属性的值,则自动把数值改为设置的最小值。
- 获取NumericUpDown控件中显示的数值
通过控件的Value属性,可以获取NumericUpDown控件中显示的数值。
语法:
public decimal Value{ get; set ;}
--属性值:NumericUpDown控件的数值
实例:
private void Form1_Load(object sender, EventArgs e)
{
numericUpDown1.Maximum = 10;
numericUpDown1.Minimum = 1;
}
private void numericUpDown1_ValueChanged(object sender, EventArgs e)
{
label1.Text = "当前控件中显示的数值:" + numericUpDown1.Value;
}
效果:
说明:
当UserEdit属性(指示用户是否已输入值)设置为true,则在验证或更新该值之前,将调用ParseEditText方法(将数字显示框中的文本转换为数值)。然后,验证该值是否为Mininum和Maximum俩值之间,并调用UpdateEditText方法(以适当的格式显示数字显示框中当前的值)。
2.设置NumericUpDown控件中数值的显示方法
NumericUpDown控件的DecimalPlaces属性用于确定在小数点后显示几位数,默认值为0。ThousandsSeparator属性用于确定是否每隔三个十进制数字就插入一个分隔符,默认情况下为false。如果将Hexadecimal属性设置为true,则该控件可以用十六进制(而不是十进制)显示值,默认情况下为false。
说明:
DecimalPlaces属性的值不能小于0,或大于99。否则会出现ArgumentOutOFRangeException异常(当参数超出调用方法所定义的允许取值范围时引发的异常)
实例:
private void Form1_Load(object sender, EventArgs e)
{
//使控件中数值的小数点显示后俩位
numericUpDown1.Maximum = 10;
numericUpDown1.Minimum = 1;
numericUpDown1.DecimalPlaces = 2;
}
效果:
4.5 列表控件(ListBox控件)
列表控件(ListBox控件)用于显示一个列表,用户可以从中选择一项或多项。如果选项总数超出可显示的帧数,则控件会自动添加滚动条。
- 在ListBox控件中添加和移出项
通过ListBox控件的Items属性的Add方法,可以向ListBox控件中添加项目。通过ListBox控件的Items属性的Remove方法,可以将ListBox控件中选中的项目移出。
实例:
private void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text == "")
{
MessageBox.Show("添加项目不能为空");
}
else
{
listBox1.Items.Add(textBox1.Text);
textBox1.Text = "";
}
}
private void button2_Click(object sender, EventArgs e)
{
if (listBox1.SelectedItems.Count == 0)
{
MessageBox.Show("请选择要删除的项目");
}
else
{
listBox1.Items.Remove(listBox1.SelectedItem);
}
}
效果:
- 创建总显示滚动条的列表控件
通过设置控件的HorizontalScrollbar属性和ScrollAlwaysVisible属性可以使控件总显示滚动条。如果将
HorizontalScrollbar属性设置为true,则显示水平滚动条。如果将ScrollAlwaysVisible属性设置为true,则始终显示垂直滚动条。
实例:
private void Form1_Load(object sender, EventArgs e)
{
//HorizontalScrollbar属性为true,显示水平滚动条
listBox1.HorizontalScrollbar = true;
//ScrollAlwaysVisible属性为true,显示垂直滚动条
listBox1.ScrollAlwaysVisible = true;
button2.Visible = false;
}
private void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text == "")
{
MessageBox.Show("添加项目不能为空");
}
else
{
listBox1.Items.Add(textBox1.Text);
textBox1.Text = "";
}
}
效果:
- 在ListBox控件中选择多项
通过设置SelectionMode属性的值可以实现在ListBox控件中选择多项。SelectionMode属性的值是SelectionMode枚举值之一,默认为SelectionMode.One。
SelectionMode枚举成员及说明:
枚举成员 | 说明 |
---|---|
MultiExtended | 可以选择多项,并且用户可以使用Shift键、Ctrl键和箭头键来进行选择 |
MultiSimple | 可以选择多项 |
None | 无法选择项 |
One | 只能选择一项 |
实例:
private void Form1_Load(object sender, EventArgs e)
{
//实现在控件中可以选择多项
listBox1.SelectionMode = SelectionMode.MultiExtended;
}
private void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text == "")
{
MessageBox.Show("添加项目不能为空");
}
else
{
listBox1.Items.Add(textBox1.Text);
textBox1.Text = "";
}
}
private void button2_Click(object sender, EventArgs e)
{
label1.Text = "共选择了:" + listBox1.SelectedItems.Count + "项";
}
效果:
5 分组类控件
分组类控件主要包括容器控件(panel控件)、分组框控件(GroupBox控件)和选项卡控件(TabControl控件)。
5.1 容器控件(Panel控件)
容器控件(Panel控件)用于为其他控件提供可识别的分组。容器控件可以使窗体的分类更详细,便于用户理解。
容器控件就好像是商场的各个楼层,如1楼是化妆品层、二楼是男装层、三楼是女装层等。当然也可以在各层中继续划分,也就是可以在容器控件中嵌套放置多个容器控件。
使用Panel控件的Show方法可以显示控件。
语法:
public void Show()
实例:
private void Form1_Load(object sender, EventArgs e)
{
panel1.Visible = false;
richTextBox1.Text = "姓名:张三\n性别:男";
}
private void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text == "")
{
MessageBox.Show("请输出姓名");
textBox1.Focus(); //使光标焦点处于文本框中
}
else
{
if (textBox1.Text == "张三")
{
panel1.Visible = true;
}
else
{
MessageBox.Show("查无此人");
textBox1.Text = "";
}
}
}
效果:
说明:如果将Panel控件的Enabled属性(设置控件是否可以对用户交互做出响应)设置为false,那么在该容器中的所有控件将设置为不可用状态。
5.2 分组框控件(GroupBox控件)
分组框控件(GroupBox控件)主要为其他控件提供分组,按照控件的分组来细分窗体的功能。其在所包含的控件集周围总是显示边框,并且可以显示标题,但是分组框没有滚动条。
语法:
public override string Text{ get; set; ];
实例:
private void Form1_Load(object sender, EventArgs e)
{
groupBox1.Text = "条件";
}
效果:
5.3 选项卡控件(TabControl控件)
选项卡控件(TabControl控件)可以添加多个选项卡,然后在选项卡上添加子控件。这样就可以把窗体设计成多页,时窗体的功能划分为多个部分。选项卡中可包含图片或其他控件。选项卡控件还可以用来创建用于设置一组相关属性的属性页。
TabControl控件包含选项卡页,TabPage控件表示选项卡,TabControl控件的TabPages属性表示其中的所有TabPage控件的集合。TabPages集合中TabPage选项卡的顺序反映了TablControl控件中选项卡的顺序。
- 改变选项卡的显示样式
通过使用TablControl控件和和组成控件上各选项卡的TabPage对象的属性,可以更改Windows窗体中选项卡的外观。通过设置这些属性,可以使用编程方式在选项卡上显示图像,以垂直方式而非水平方式显示选项卡,显示多行选项卡,以及启用或禁用选项卡。
①在选项卡的标签部位显示图像
说明:
为了使用户更容易了解选项卡的作用,可以在鼠标移入选项卡时,弹出一个提示信息,对当前选项卡的作用或操作步骤进行详细说明。其设置步骤如下:将tabPage属性中的ShoeToolTips属性设置为true,然后在tabPage属性的ToolTipText属性中输入相关的说明文字。
实例:
private void Form1_Load(object sender, EventArgs e)
{
//向窗体添加一个ImageList控件,然后将图像添加到ImageList控件的图像列表,然后添加到tabpage里面
tabControl1.ImageList = imageList1;
tabPage1.ImageIndex = 0;
tabPage1.Text = "选项卡 1";
tabPage2.ImageIndex = 1;
tabPage2.Text = "选项卡 2";
}
效果:
②将选项卡设置为按钮
将TabControl控件的Appearance属性设置为Buttons或FlatButtons,即可将选项卡显示为按钮样式。如果设置为Buttons,则选项卡具有三维按钮的外观。如果设置为FlatButtons,则选项卡具有水平按钮的外观。
实例:
private void Form1_Load(object sender, EventArgs e)
{
tabControl1.ImageList = imageList1;
tabPage1.ImageIndex = 0;
tabPage1.Text = "选项卡 1";
tabPage2.ImageIndex = 1;
tabPage2.Text = "选项卡 2";
//将控件Appearance属性设置为buttons,使其具有三维按钮的外观
tabControl1.Appearance = TabAppearance.Buttons;
}
效果:
- 在选项卡中添加控件
如果要在选项卡中添加控件,可以通过TabPage的Controls属性的Add方法实现。Add方法主要用于将指定的控件添加到控件集合中。
语法:
public virtual void Add(Control value)
实例:
private void Form1_Load(object sender, EventArgs e)
{
//通过Controls属性的Add方法向tabPage1中添加一个按钮控件
tabControl1.ImageList = imageList1;
tabPage1.ImageIndex = 0;
tabPage1.Text = "选项卡 1";
tabPage2.ImageIndex = 1;
tabPage2.Text = "选项卡 2";
Button btn1 = new Button();
btn1.Text = "添加的按钮控件";
tabPage1.Controls.Add(btn1);
}
效果:
注意:在设置TabControl控件中的控件位置时,是以TablControl控件为参照物的。
- 添加和移除选项卡
①以编程方式添加选项卡
控件默认情况下,TabControl控件包含俩个TabPage控件,可以使用TabPages属性的Add方法添加新的选项卡。
Add方法主要用于将TabPage添加到集合。
说明:
在TabPages集合中所添加的选项卡页的顺序,是选项卡在控件中出现的顺序。集合中的选项卡页的顺序反映了选项卡在控件中出现的顺序。
语法:
public void Add(tabPage value)
--value:要添加的tabPage
实例:
private void Form1_Load(object sender, EventArgs e)
{
//通过TabPages属性的Add方法向添加新的选项卡
tabControl1.ImageList = imageList1;
tabPage1.ImageIndex = 0;
tabPage1.Text = "选项卡 1";
tabPage2.ImageIndex = 1;
tabPage2.Text = "选项卡 2";
string Title = "新增选项卡 " + (tabControl1.TabCount +1).ToString() ;
tabControl1.TabPages.Add(Title);
}
效果:
②以编程方式移除选项卡
如果要移除控件中的某个选项卡,可以使用TabPages属性的Remove方法。
Remove方法的功能是从集合中移除TabPage。
说明:在用TabPages属性的Remove(Value)方法删除选项卡时,如果参数value的值为空则触发异常。
语法:
public void Remove(tabPage value)
--value:要移除的tabPage
实例:
private void Form1_Load(object sender, EventArgs e)
{
//通过TabPages属性的Add方法向添加新的选项卡
tabControl1.ImageList = imageList1;
tabPage1.ImageIndex = 0;
tabPage1.Text = "选项卡 1";
tabPage2.ImageIndex = 1;
tabPage2.Text = "选项卡 2";
}
private void button1_Click(object sender, EventArgs e)
{
string Title = "新增选项卡 " + (tabControl1.TabCount + 1).ToString();
tabControl1.TabPages.Add(Title);
}
private void button2_Click(object sender, EventArgs e)
{
if (tabControl1.SelectedIndex ==0)
{
MessageBox.Show("请选择要删除的选项卡");
}
else
{
tabControl1.TabPages.Remove(tabControl1.SelectedTab);
}
}
效果:
6 菜单、工具栏和状态栏控件
菜单是窗体应用程序中主要的用户界面要素,工具栏为应用程序提供了操作系统的界面,状态栏显示系统的一些状态信息。
6.1 菜单控件(MenuStrip控件)
菜单控件(MenuStrip控件)是程序的主菜单。MenuStrip控件取代了先前版本的MainMenu控件。MenuStrip控件支持多文档界面、菜单合并、工具栏提示和溢出。可以通过添加访问键、快捷键、选中标记、图像和分隔条,来增强菜单的可用性和可读性。
说明:
①在使用菜单栏的快捷键时,首先要选择主菜单,在弹出下拉列表后,才可以在键盘中单击子菜单所对应的快捷键。
②在设置菜单项时,也可以在MenuStrip控件中的Items属性所调用的“项集合编辑器”对话框中添加所需的菜单项。
操作步骤:
效果:
6.2 工具栏控件(ToolStrip控件)
工具栏控件(ToolStrip控件)是.NET框架3.5增加的新控件,它替换了早期版本的ToolBar控件、ToopStrip及其关联的类,它可以创建具有Windows XP、Office、InternetExplorer或自定义的外观和行为的工具栏及其他用户界面元素。这些元素支持溢出及运行时重新排序。
工具栏其实就相当于每个工人的工具箱,每个人都有自己常用的工具(每个人的常用工具各不相同),为了方便,将这些常用工具放入个人工具箱。
菜单栏中对应控件与其作用:
控件 | 作用 |
---|---|
Button | 包含文本和图像中可以让用户选择的项 |
Label | 包含文本和图像的项,不可以让用户选择,可以显示超链接 |
SplitButton | 在Button的基础上增加了一个下拉菜单 |
DropDownButton | 用于下拉菜单选择项 |
Separator | 分隔符 |
ComboBox | 显示一个ComboBox的项 |
TextBox | 显示一个TextBox的项 |
ProgressBar | 显示一个ProgressBar的项 |
操作步骤:
效果:
6.3 状态栏控件(StatusStrip控件)
状态栏控件(StatusStrip控件)通常用于窗体的最底部,用于显示窗体上的对象的相关信息,或者可以显示应用程序的信息。通常,StatusStrip控件由ToolStripStatusLabel对象组成,每个这样的对象都可以显示文本、图标或同时显示俩者。StatusStrip还可以包含ToolStripDropDownButton、ToolStripSplitButton和ToolStripProgressBar控件(ToolStripProgressBar控件只能以水平方向显示)。
实例:
private void Form1_Load(object sender, EventArgs e)
{
//在任务栏上显示当前系统日期
this.toolStripStatusLabel1.Text = DateTime.Now.ToShortDateString();
}
private void button1_Click(object sender, EventArgs e)
{
this.toolStripProgressBar1.Minimum = 0; //进度条起始读书
this.toolStripProgressBar1.Minimum = 5000; //进度条最大值
this.toolStripProgressBar1.Step = 2; //进度条的增值
for (int i = 0; i <= 4999; i++)
{
this.toolStripProgressBar1.PerformStep();
}
}
效果: