窗体应用程序.docx
- 文档编号:8217788
- 上传时间:2023-01-29
- 格式:DOCX
- 页数:50
- 大小:866.93KB
窗体应用程序.docx
《窗体应用程序.docx》由会员分享,可在线阅读,更多相关《窗体应用程序.docx(50页珍藏版)》请在冰豆网上搜索。
窗体应用程序
窗体应用程序就是Windows窗体应用程序,从本章开始将详细介绍Windows窗体应用程序的相关知识。
窗体是一个窗口或对话框,是存放各种控件的容器,可用来向用户显示信息。
C#中提供了许多Windows窗体控件。
例如Label控件、TextBox控件、RichTextBox控件、Button控件和CheckBox控件等等。
它们的作用一目了然,本章将详细介绍这些控件。
本章学习要点:
Ø掌握Windows窗体的两种类型
Ø理解Windows窗体控件的概念
Ø掌握显示信息控件Label和LinkLabel的使用
Ø理解TextBox、MashedTextBox和RichTextBox控件的区别
Ø掌握按钮类控件的使用
Ø掌握ImageList控件、PictureBox控件以及Timer控件的使用
Ø掌握列表类控件的使用
Ø理解Panel控件和GroupBox控件的用法
Ø掌握TabControl控件并能够熟练地进行操作
10.1Windows窗体控件概述
在C#中,窗体主要分为两种类型:
普通窗体又称单文档窗体,它又可以分为模式窗体和无模式窗体。
本节介绍的窗体都属于普通窗体
MDI父窗体又称多文档窗体,其中可以放置普通子窗体
Windows窗体控件是用户可与之交互以便输入或操作数据的对象。
通常情况下,向窗体上添加控件,可以生成窗体应用程序。
Windows窗体提供了许多控件和组件,大多数的控件都派生于Control类。
它们都有自己的属性、方法和事件,便于控件适合于特定的用途。
窗体控件主要包括基本控件、按钮类控件、图形图像控件、列表类控件以及容器类控件等。
因为Control类定义了控件的基本功能,所以许多属性和事件都相同。
表10-1列出了大多数控件共有的常见属性。
表10-2列出了控件共有的常见事件。
下面各节中控件的这些属性和事件不再一一列出。
表10-1多数控件共有的常用属性
属性名
说明
Name
用来标识控件的名称
Text
获取或设置控件上的文本
Size
控件的大小(以像素为单位)
Location
控件左上角相对于其容器左上角的坐标
Font
用于显示控件中文本的字体
BackColor
控件或组件的背景色
ForeColor
控件或组件的前景色,用于显示文本
Cursor
指针移过该控件时显示的光标
Enabled
指示是否启用该控件,默认为True
Visible
确定控件是可见的还是隐藏的,默认为True
表10-2多数控件共有的常用事件
事件名
说明
Click
单击组件时触发该事件
MouseUp
在鼠标指针在组件上方并释放鼠标按钮时发生
MouseMove
鼠标指针移过组件时发生
MouseLeave
在鼠标离开控件的可见部分时发生
Validated
在成功验证控件后发生
Validating
在控件验证时发生
VisibleChanged
在更改控件的可见性时发生
表10-1和10-2分别列出了大多数控件常用的属性和事件,除了上面列出的之外,还有其他共有的属性和事件。
这里不再一一介绍。
10.2基本控件
基本控件包括显示信息(标签)控件和文本框控件。
其中显示信息控件又包括Label控件和LinkLabel控件;文本框控件主要指TextBox控件、MaskedTextBox控件和RichTextBox控件。
下面详细介绍这些控件的相关知识。
10.2.1Label控件
.NETFramework只包含两个标签控件:
Label控件和LinkLabel控件。
Label控件主要用于显示用户不能编辑的文本或图像。
用户常常使用它对窗体上的其他各种控件进行说明或标注,例如“用户名”、“用户密码”和“出生日期”等。
它是窗体应用程序最常用的控件之一。
Label控件最常用的属性如表10-3所示。
表10-3Label控件的常用属性
属性名
说明
TextAlign
确定文本控件的显示位置
Image
设置要在控件上显示的图像
Font
设置控件中文本的字体
AutoSize
是否根据字号自动调整大小,只对文本不换行的控件有效
BorderStyle
用于设置控件边框的样式
ImageAlign
设置显示图像在控件的什么位置
如果想要将Label控件的背景设置为透明的,只要将该控件的BackColor属性设置为Color.Transparent即可。
10.2.2LinkLabel控件
LinkLabel控件可以向Windows窗体应用程序添加Web样式的链接。
一切可以使用Label控件的地方,都可以使用LinkLabel控件。
该控件还可以将文本的一部分设置为指向某个对象或Web页的链接。
LinkLabel控件除了具有Label控件的所有属性、方法和事件以外,还有针对超链接的属性和事件。
LinkLabel控件的特有属性如表10-4所示。
表10-4LinkLabel控件的特有属性
属性名
说明
LinkArea
设置激活链接的文本区域
LinkBehavior
确定该超链接的下划线行为,默认值为SystemDefault
LinkColor
设置超链接处于默认状态时的颜色
LinkVisited
确定超链接是否应按已访问的样式呈现,默认为False
VisitedLinkColor
确定当LinkVisited属性设置为True时超链接的颜色
ActiveLinkColor
确定当用户单击超链接的颜色
DisabledLinkColor
确定当超链接被禁用时的颜色
与Lable控件相比,LinkLabel控件还多了一个常用的LinkClicked事件。
该事件确定选择链接文本后将发生的操作。
10.2.3TextBox控件
TextBox控件用于获取用户输入的信息或向用户显示文本。
通常用于可编辑文本,不过也可使其成为只读控件。
例如,在“用户名”和“用户密码”等标签后面就是文本框。
TextBox控件可以显示多行,对文本换行使其符合控件的大小以及添加基本的格式设置。
它为在该控件中显示的或输入的文本提供单个格式化样式。
和Label控件、LinkLabel控件一样,TextBox控件也包括多个属性和事件,如表10-5列出了TextBox控件常用的属性。
表10-5TextBox控件的常用属性
属性名
说明
Multiline
控制编辑控件的文本是否能够跨越多行
ScrollBars
如果Multiline设置为True,指示该控件显示哪些滚动条。
默认为None
WordWrap
如果Mulitiline设置为True,指示控件是否自动换行
ReadOnly
设置文本框是否是只读
AcceptsReturn
多行编辑控件中是否允许输入回车符
AccpetsTab
确定是否接受制表符作为多行编辑控件的输入
MaxLength
限制在TextBox控件中输入的最大字符数量
UseSystemPasswordChar
指示控件中的文本是否以默认的密码字符显示,默认为False
PasswordChar
指示密码输入显示的字符
CausesValidation
如果该属性设置为True,且该控件获得焦点时,会触发Validating事件和Validated事件。
验证失去焦点的控件中数据的有效性
CharacterCasing
指定是否会改变输入的大小写。
该值有3个:
Normal(默认)、Upper和Lower
10.2.4MaskedTextBox控件
MaskedTextBox控件是一个增强的TextBox控件,它支持用于接受或拒绝用户输入的声明性语法。
通过使用Mask属性,不需要在应用程序中编写任何的验证逻辑。
从指定的列表中选择预定义的掩码说明,或者选择“自定义”定义一个自定义掩码,即可指定下面的输入:
可选和必需的输入字符
应该直接出现在MaskedTextBox中的字符,或者说掩码的原义字符
掩码中给定位置所需要的输入类型,例如只允许输入字母或数字
输入字符的处理,例如字符的大小写转换
当MaskedTextBox控件运行显示时,会将掩码表示为一系列提示字符和可选的原义字符,表示一个必需或可选输入的每个可编辑掩码位置都显示为单个提示字符。
MaskedTextBox控件的常用属性如表10-6所示。
表10-6MaskedTextBox控件的常用属性
属性名
说明
Mask
设置控件此控件允许的输入的字符串
PromptChar
指定自定义提示字符
HidePromptOnLeave
当控件失去输入焦点时用户能否看到提示字符,默认为False
HideSelection
当编辑控件失去焦点时,应隐藏选定内容
TextMaskFormat
指示在从Text属性中返回字符串时是否包含原义字符和(或)提示字符
【实践案例10-1】
例如,使用MaskedTextBox控件要实现的功能是:
在文本框输入内容时,有一个掩码的原义字符“-”,当用户输入一定的字符后就会自动跳到原义字符“-”的后面。
具体步骤如下:
(1)在应用程序中添加名称为MaskedTextBoxForm的窗体,打开窗体的【属性】窗格,设置窗体的Name属性和Text属性。
(2)从【工具箱】中添加4个Label控件和4个MaskedTextBox控件,分别表示邮政编码、出生日期、联系电话和身份证号。
(3)打开MaskedTextBox控件的【属性】窗格,找到Mask属性,打开【输入掩码】的对话框,分别为4个MaskedTextBox控件设置掩码。
(4)启动该程序,运行效果分别如图10-1、图10-2所示。
图10-1程序设置掩码效果图图10-2程序输入内容后效果图
10.2.5RichTextBox控件
RichTextBox控件用于显示、输入和操作格式文本,它是一个可编辑控件,又称为富文本控件。
RichTextBox控件除了做TextBox控件所做的每件事外,还可以显示字体、颜色和连接,从文件加载文本和加载嵌入图像,以及查找指定的字符串。
RichTextBox控件的功能非常强大,可以将文本直接分配给RichTextBox控件,也可以为控件内的文本分配字符和段落格式设置。
另外,RichTextBox控件还可以打开、编辑和存储.rtf格式的文件、ASCII文本格式文件及Unicode编码格式的文件。
表10-7列出了该控件的常用属性。
表10-7RichTextBox控件的常用属性
属性名
说明
CanFocus
获取一个值,该值指示控件是否可以接收焦点
CanRedo
如果某个任务还没有完成,该属性的值为True,否则为False
CanUndo
获取一个值,该值指示用户在文本框控件中能否撤销前一操作
SelectionIndent
应用到当前选定文本或插入点的左边的当前缩进距离
SelectionRightIndent
该控件右边缘与选中文本或当前插入点添加的文本的右边缘之间的距离
SelectedText
获取或设置RichTextBox控件内的选定文本
SelectionFont
获取或设置当前选定文本或插入点的字体
SelectionColor
获取或设置当前选定文本或插入点的文本颜色
TextBox控件常用于从用户处获取短文本字符串,而RichTextBox控件通常用于提供类似字处理程序(如文本中有黑体、斜体和下划线等)的文本操作和显示功能。
【实践案例10-2】
例如,当用户输入个人介绍后,单击不同的按钮分别达到字体加粗、字体变色以及字体缩进的效果。
具体步骤如下:
(1)在应用程序中添加名称为RichTextBoxForm的窗体,然后打开【属性】窗格,分别设置该窗体的Name属性和Text属性。
(2)向窗体中添加1个Label控件、1个RichTextBox控件和3个Button控件。
使其设计效果如图10-3所示。
图10-3案例10-2的设计效果
(3)单击不同的按钮,触发按钮的Click事件,实现字体加粗、字体设置为红色以及实现缩进的效果。
代码如下:
privatevoidbtnBlod_Click(objectsender,EventArgse)//单击“设置粗体”按钮
{
if(string.IsNullOrEmpty(rtbInfoMessage.SelectedText))
MessageBox.Show("请选择您要加粗的字体");
else
this.rtbInfoMessage.SelectionFont=newFont(rtbInfoMessage.SelectionFont,FontStyle.Bold);
}
privatevoidbtnBlue_Click(objectsender,EventArgse)//单击“设置红色”按钮
{
if(string.IsNullOrEmpty(rtbInfoMessage.SelectedText))
MessageBox.Show("请选择您要变色的字体");
else
this.rtbInfoMessage.SelectionColor=Color.Red;
}
privatevoidbtnSuo_Click(objectsender,EventArgse)//单击“缩进距离”按钮
{
rtbInfoMessage.SelectionIndent=10;
}
上述代码中,首先判断用户选中的字体是否为空。
然后分别使用RichTextBox控件的SelectionFont属性、SelectionColor属性和SelectionIndent属性设置字体为粗体、红色,且缩进距离为10。
(4)运行本程序的代码,初始效果如图10-4所示。
选中输入的字体,然后分别单击不同的按钮,最终效果如图10-5所示。
图10-4程序初始时的运行效果图10-5单击按钮后的运行效果
10.3按钮类控件
在C#应用程序中,按钮也是经常使用到的。
例如,选择性别的单选按钮、选择爱好的复选框按钮以及单击确定和关闭的按钮等等。
上节案例用户已经简单的了解过Button控件,本节就来详细介绍这些按钮类的控件。
10.3.1Button控件
Button控件表示为简单的按钮,派生于ButtonBase类。
它通常呈现为一个矩形按钮,允许用户通过单击来执行某些操作。
Button控件主要执行以下任务:
打开另一个对话框或应用程序
用某种状态关闭对话框(例如OK按钮)
在对话框输入数据后执行某些操作
Button控件也有自己的属性和事件,它常用的属性如表10-8所示。
表10-8Button控件的常用属性
属性名
说明
Image
该属性用于在控件上显示的图像
ImageAlign
该属性用于设置控件上的图像显示在什么地方
ImageIndex
在控件上显示的ImageList中的图像的索引
DialogResult
通过单击按钮在模式窗体中产生的对话框结果
FlatStyle
确定当用户将鼠标移动到控件上并单击时该控件的外观
表10-8中,FlatStyle属性可以控制按钮控件的外观,FlatStyle是一个枚举类型,它有4表枚举值。
具体说明如下所示:
Standard默认值,设置控件外观为三维
Flat该控件以平面显示
Popup该控件以平面显示,直到鼠标指针移动到该控件为止,此时其外观为三维
System该控件的外观是由用户的操作系统决定的
Button控件最常用的事件是Click事件。
当鼠标指向该按钮时,按下鼠标左键然后再释放它,就会触发Click事件;如果按钮得到焦点,并且用户按下了回车键时也会触发该事件。
10.3.2RadioButton控件
RadioButton控件是一个单选按钮,一般用作一个组,也称为选项按钮。
它和Button按钮一样,派生于ButtonBase类。
RadioButton按钮表示从多个可选项中选择一项操作,即只允许用户从几个选项中选择一个答案。
例如,选择用户性别时,“男”和“女”就是单选按钮。
用户可以使用分组框或面板把一组单选按钮组合起来,确保只有一个单选按钮能被选中。
RadioButton控件常用的属性如表10-9所示。
表10-9RadioButton控件的常用属性
属性名
说明
Checked
表示该控件是否已经选中,默认为False
CheckAlign
获取或设置RadioButton控件的复选框部分的位置
AutoCheck
单击控件时,Checked的值和外观是否自动更改,默认为True
Appearance
控制此控件是按通常情况显示还是显示为WindowsPushButton。
默认为Normal
FlatStyle
确定当用户将鼠标移动到控件上并单击时该控件的外观
如果AutoCheck属性设置为True,当选择单选按钮时,将自动清除该组中的所有其他单选按钮。
通常当使用验证代码确保选定的单选按钮是允许的选项时,才将其属性设置为False。
RadioButton控件最常用的事件是CheckedChanged事件和Click事件。
当RadioButton控件的Checked属性值更改时,将会触发该事件。
如果GroupBox或窗体有多个RadioButton控件,这个事件会被触发两次。
每次单击RadioButton控件,就会引发Click事件。
Click事件和CheckedChanged事件有所不同,连续单击RadioButton控件,每次都能引发Click事件,但是不会引发CheckChanged事件。
【实践案例10-3】
每次考试时,总会有单选题的出现,本节实例就模拟实现单项选择的效果。
具体步骤如下所示:
(1)在应用程序中添加名称为RadioButtonForm的窗体,打开窗体的【属性】窗格,设置Name属性和Text属性。
(2)从【工具箱】中向该窗体添加2个Label控件、4个RadioButton控件和1个RadioButton控件。
其设计效果如图10-6所示。
用户可以根据相应的控件进行布局。
图10-6实践案例10-3运行效果
(3)当用户单击4个RadioButton控件时,触发CheckedChanged事件,获取用户选中的结果。
具体代码如下:
privatevoidradioButton1_CheckedChanged(objectsender,EventArgse)
{
label2.ForeColor=Color.Black;
foreach(Controlcontrolinthis.Controls)
{
if(controlisRadioButton)
{
if(((RadioButton)control).Checked)
label2.Text="您的答案是:
"+((RadioButton)control).Text;
}
}
}
(4)当用户单击“提交”按钮时,触发按钮的Click事件。
判断用户选中的结果是否正确,使用Label控件的ForeColor属性设置字体样式。
具体代码如下:
privatevoidbutton1_Click(objectsender,EventArgse)
{
label2.ForeColor=Color.Red;
if(radioButton2.Checked)
label2.Text="恭喜您,回答正确";
else
label2.Text="对不起,回答错误";
}
(5)运行本实例的代码,选中单选按钮的效果如图10-7所示。
单击“提交”按钮的效果如图10-8所示。
图10-7选中单选按钮的运行效果图10-8单击提交按钮的运行效果
4个RadioButton控件都触发同一个事件,打开控件的【属性】窗格,查看事件,找到CheckChange事件,单击该事件后面的小图标,选择radioButton1_CheckedChanged事件即可。
10.3.3CheckBox控件
CheckBox控件表示复选框,用来表示某个选项是否被选中,常用于为用户提供是/否或真/假的选项。
例如,用户可以选择多个爱好,这些爱好可以使用CheckBox控件。
它和RadioButton控件的相同处在于都是表示用户的选项;而不同之处在于RadioButton控件一次只能选择一个单选按钮,CheckBox控件则表示可以选择任何的数量。
CheckBox控件常用的属性如表10-10所示。
表10-10RadioButton控件的常用属性
属性名
说明
Checked
表示该控件是否已经选中,默认为False
CheckAlign
获取或设置RadioButton控件的复选框部分的位置
AutoCheck
单击控件时,Checked的值和外观是否自动更改,默认为True
CheckState
获取或设置CheckBox的状态,默认为Unchecked
ThreeState
指示CheckBox是否会允许三种选中状态,而不是两种状态
CheckState属性的返回值是Checked和Unchecked;如果ThreeState属性被设置为True,则CheckState还可能返回Indeterminate。
【实践案例10-4】
例如,本案例模拟实现用户多项选择的效果,具体步骤如下:
(1)创建名称为CheckBoxForm的窗体,设置窗体的Name属性和Text属性。
(2)从【工具箱】中向该窗体添加2个Label控件、4个CheckBox控件和1个Button控件,设计效果如图10-9所示。
用户可以根据相应的控件进行布局。
图10-9CheckBox控件的设计效果
(3)单击4个CheckBox控件时,触发控件的CheckedChanged的事件,动态的显示用户选择的信息。
该事件的代码如下所示:
privatevoidckbLiu_CheckedChanged(objectsender,EventArgse)
{
label2.Text="您的答案是:
";
if(ckbLiu.Checked)
label2.Text+=ckbLiu.Text+"";
/*省略其它CheckBox选中的情况*/
if(!
ckbLiu.Checked)
label2.Text.Replace(ckbLiu.Text,"");
/*省略其它CheckBox未被选中的情况*/
}
(4)单击“提交”按钮时,触发按钮的Click事件,判断用户提交的信息是否正确。
其中Contains()方法判断Label控件中是否包含某个字符串。
具体代码如下所示:
privatevoidbtnSure_Click(objectsender,EventArgse)
{
if(!
ckbLiu.Checked&&!
ckbMao.Checked&&!
ckbZhou.Checked&&!
ckbZhu.Checked)
{
label2.Text="请选择答案,再提交";
}
el
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 窗体 应用程序