已阅读5页,还剩29页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
窗体应用程序就是Windows窗体应用程序,从本章开始将详细介绍Windows窗体应用程序的相关知识。窗体是一个窗口或对话框,是存放各种控件的容器,可用来向用户显示信息。C#中提供了许多Windows窗体控件。例如Label控件、TextBox控件、RichTextBox控件、Button控件和CheckBox控件等等。它们的作用一目了然,本章将详细介绍这些控件。本章学习要点: 掌握Windows窗体的两种类型 理解Windows窗体控件的概念 掌握显示信息控件Label和LinkLabel的使用 理解TextBox、MashedTextBox和RichTextBox控件的区别 掌握按钮类控件的使用 掌握ImageList控件、PictureBox控件以及Timer控件的使用 掌握列表类控件的使用 理解Panel控件和GroupBox控件的用法 掌握TabControl控件并能够熟练地进行操作10.1 Windows窗体控件概述在C#中,窗体主要分为两种类型:l 普通窗体 又称单文档窗体,它又可以分为模式窗体和无模式窗体。本节介绍的窗体都属于普通窗体l MDI父窗体 又称多文档窗体,其中可以放置普通子窗体Windows窗体控件是用户可与之交互以便输入或操作数据的对象。通常情况下,向窗体上添加控件,可以生成窗体应用程序。Windows窗体提供了许多控件和组件,大多数的控件都派生于Control类。它们都有自己的属性、方法和事件,便于控件适合于特定的用途。窗体控件主要包括基本控件、按钮类控件、图形图像控件、列表类控件以及容器类控件等。因为Control类定义了控件的基本功能,所以许多属性和事件都相同。表10-1列出了大多数控件共有的常见属性。表10-2列出了控件共有的常见事件。下面各节中控件的这些属性和事件不再一一列出。表10-1 多数控件共有的常用属性属性名说明Name用来标识控件的名称Text获取或设置控件上的文本Size控件的大小(以像素为单位)Location控件左上角相对于其容器左上角的坐标Font用于显示控件中文本的字体BackColor控件或组件的背景色ForeColor控件或组件的前景色,用于显示文本Cursor指针移过该控件时显示的光标Enabled指示是否启用该控件,默认为TrueVisible确定控件是可见的还是隐藏的,默认为True表10-2 多数控件共有的常用事件事件名说明Click单击组件时触发该事件MouseUp在鼠标指针在组件上方并释放鼠标按钮时发生MouseMove鼠标指针移过组件时发生MouseLeave在鼠标离开控件的可见部分时发生Validated在成功验证控件后发生Validating在控件验证时发生VisibleChanged在更改控件的可见性时发生表10-1和10-2分别列出了大多数控件常用的属性和事件,除了上面列出的之外,还有其他共有的属性和事件。这里不再一一介绍。10.2 基本控件基本控件包括显示信息(标签)控件和文本框控件。其中显示信息控件又包括Label控件和LinkLabel控件;文本框控件主要指TextBox控件、MaskedTextBox控件和RichTextBox控件。下面详细介绍这些控件的相关知识。10.2.1 Label控件.NET Framework只包含两个标签控件:Label控件和LinkLabel控件。Label控件主要用于显示用户不能编辑的文本或图像。用户常常使用它对窗体上的其他各种控件进行说明或标注,例如“用户名”、“用户密码”和“出生日期”等。它是窗体应用程序最常用的控件之一。Label控件最常用的属性如表10-3所示。表10-3 Label控件的常用属性属性名说明TextAlign确定文本控件的显示位置Image设置要在控件上显示的图像Font设置控件中文本的字体AutoSize是否根据字号自动调整大小,只对文本不换行的控件有效BorderStyle用于设置控件边框的样式ImageAlign设置显示图像在控件的什么位置如果想要将Label控件的背景设置为透明的,只要将该控件的BackColor属性设置为Color.Transparent即可。10.2.2 LinkLabel控件LinkLabel控件可以向Windows窗体应用程序添加Web样式的链接。一切可以使用Label控件的地方,都可以使用LinkLabel控件。该控件还可以将文本的一部分设置为指向某个对象或Web页的链接。LinkLabel控件除了具有Label控件的所有属性、方法和事件以外,还有针对超链接的属性和事件。LinkLabel控件的特有属性如表10-4所示。表10-4 LinkLabel控件的特有属性属性名说明LinkArea设置激活链接的文本区域LinkBehavior确定该超链接的下划线行为,默认值为SystemDefaultLinkColor设置超链接处于默认状态时的颜色LinkVisited确定超链接是否应按已访问的样式呈现,默认为FalseVisitedLinkColor确定当LinkVisited属性设置为True时超链接的颜色ActiveLinkColor确定当用户单击超链接的颜色DisabledLinkColor确定当超链接被禁用时的颜色与Lable控件相比,LinkLabel控件还多了一个常用的LinkClicked事件。该事件确定选择链接文本后将发生的操作。10.2.3 TextBox控件TextBox控件用于获取用户输入的信息或向用户显示文本。通常用于可编辑文本,不过也可使其成为只读控件。例如,在“用户名”和“用户密码”等标签后面就是文本框。TextBox控件可以显示多行,对文本换行使其符合控件的大小以及添加基本的格式设置。它为在该控件中显示的或输入的文本提供单个格式化样式。和Label控件、LinkLabel控件一样,TextBox控件也包括多个属性和事件,如表10-5列出了TextBox控件常用的属性。表10-5 TextBox控件的常用属性属性名说明Multiline控制编辑控件的文本是否能够跨越多行ScrollBars如果Multiline设置为True,指示该控件显示哪些滚动条。默认为NoneWordWrap如果Mulitiline设置为True,指示控件是否自动换行ReadOnly设置文本框是否是只读AcceptsReturn多行编辑控件中是否允许输入回车符AccpetsTab确定是否接受制表符作为多行编辑控件的输入MaxLength限制在TextBox控件中输入的最大字符数量UseSystemPasswordChar指示控件中的文本是否以默认的密码字符显示,默认为FalsePasswordChar指示密码输入显示的字符CausesValidation如果该属性设置为True,且该控件获得焦点时,会触发Validating事件和Validated事件。验证失去焦点的控件中数据的有效性CharacterCasing指定是否会改变输入的大小写。该值有3个:Normal(默认)、Upper和Lower10.2.4 MaskedTextBox控件MaskedTextBox控件是一个增强的TextBox控件,它支持用于接受或拒绝用户输入的声明性语法。通过使用Mask属性,不需要在应用程序中编写任何的验证逻辑。从指定的列表中选择预定义的掩码说明,或者选择“自定义”定义一个自定义掩码,即可指定下面的输入:l 可选和必需的输入字符l 应该直接出现在MaskedTextBox中的字符,或者说掩码的原义字符l 掩码中给定位置所需要的输入类型,例如只允许输入字母或数字l 输入字符的处理,例如字符的大小写转换当MaskedTextBox控件运行显示时,会将掩码表示为一系列提示字符和可选的原义字符,表示一个必需或可选输入的每个可编辑掩码位置都显示为单个提示字符。MaskedTextBox控件的常用属性如表10-6所示。表10-6 MaskedTextBox控件的常用属性属性名说明Mask设置控件此控件允许的输入的字符串PromptChar指定自定义提示字符HidePromptOnLeave当控件失去输入焦点时用户能否看到提示字符,默认为FalseHideSelection当编辑控件失去焦点时,应隐藏选定内容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.5 RichTextBox控件RichTextBox控件用于显示、输入和操作格式文本,它是一个可编辑控件,又称为富文本控件。RichTextBox控件除了做TextBox控件所做的每件事外,还可以显示字体、颜色和连接,从文件加载文本和加载嵌入图像,以及查找指定的字符串。RichTextBox控件的功能非常强大,可以将文本直接分配给RichTextBox控件,也可以为控件内的文本分配字符和段落格式设置。另外,RichTextBox控件还可以打开、编辑和存储.rtf格式的文件、ASCII文本格式文件及Unicode编码格式的文件。表10-7列出了该控件的常用属性。表10-7 RichTextBox控件的常用属性属性名说明CanFocus获取一个值,该值指示控件是否可以接收焦点CanRedo如果某个任务还没有完成,该属性的值为True,否则为FalseCanUndo获取一个值,该值指示用户在文本框控件中能否撤销前一操作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事件,实现字体加粗、字体设置为红色以及实现缩进的效果。代码如下:private void btnBlod_Click(object sender, EventArgs e)/单击“设置粗体”按钮if (string.IsNullOrEmpty(rtbInfoMessage.SelectedText)MessageBox.Show(请选择您要加粗的字体);elsethis.rtbInfoMessage.SelectionFont = new Font(rtbInfoMessage.SelectionFont, FontStyle.Bold);private void btnBlue_Click(object sender, EventArgs e) /单击“设置红色”按钮if (string.IsNullOrEmpty(rtbInfoMessage.SelectedText)MessageBox.Show(请选择您要变色的字体);elsethis.rtbInfoMessage.SelectionColor = Color.Red;private void btnSuo_Click(object sender, EventArgs e)/单击“缩进距离”按钮rtbInfoMessage.SelectionIndent = 10; 上述代码中,首先判断用户选中的字体是否为空。然后分别使用RichTextBox控件的SelectionFont属性、SelectionColor属性和SelectionIndent属性设置字体为粗体、红色,且缩进距离为10。(4)运行本程序的代码,初始效果如图10-4所示。选中输入的字体,然后分别单击不同的按钮,最终效果如图10-5所示。 图10-4 程序初始时的运行效果 图10-5 单击按钮后的运行效果10.3 按钮类控件在C#应用程序中,按钮也是经常使用到的。例如,选择性别的单选按钮、选择爱好的复选框按钮以及单击确定和关闭的按钮等等。上节案例用户已经简单的了解过Button控件,本节就来详细介绍这些按钮类的控件。10.3.1 Button控件Button控件表示为简单的按钮,派生于ButtonBase类。它通常呈现为一个矩形按钮,允许用户通过单击来执行某些操作。Button控件主要执行以下任务:l 打开另一个对话框或应用程序l 用某种状态关闭对话框(例如OK按钮)l 在对话框输入数据后执行某些操作Button控件也有自己的属性和事件,它常用的属性如表10-8所示。表10-8 Button控件的常用属性属性名说明Image该属性用于在控件上显示的图像ImageAlign该属性用于设置控件上的图像显示在什么地方ImageIndex在控件上显示的ImageList中的图像的索引DialogResult通过单击按钮在模式窗体中产生的对话框结果FlatStyle确定当用户将鼠标移动到控件上并单击时该控件的外观表10-8中,FlatStyle属性可以控制按钮控件的外观,FlatStyle是一个枚举类型,它有4表枚举值。具体说明如下所示:l Standard 默认值,设置控件外观为三维l Flat 该控件以平面显示l Popup 该控件以平面显示,直到鼠标指针移动到该控件为止,此时其外观为三维l System 该控件的外观是由用户的操作系统决定的Button控件最常用的事件是Click事件。当鼠标指向该按钮时,按下鼠标左键然后再释放它,就会触发Click事件;如果按钮得到焦点,并且用户按下了回车键时也会触发该事件。10.3.2 RadioButton控件RadioButton控件是一个单选按钮,一般用作一个组,也称为选项按钮。它和Button按钮一样,派生于ButtonBase类。RadioButton按钮表示从多个可选项中选择一项操作,即只允许用户从几个选项中选择一个答案。例如,选择用户性别时,“男”和“女”就是单选按钮。用户可以使用分组框或面板把一组单选按钮组合起来,确保只有一个单选按钮能被选中。RadioButton控件常用的属性如表10-9所示。表10-9 RadioButton控件的常用属性属性名说明Checked表示该控件是否已经选中,默认为FalseCheckAlign获取或设置RadioButton控件的复选框部分的位置AutoCheck单击控件时,Checked的值和外观是否自动更改,默认为TrueAppearance控制此控件是按通常情况显示还是显示为Windows PushButton。默认为NormalFlatStyle确定当用户将鼠标移动到控件上并单击时该控件的外观如果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事件,获取用户选中的结果。具体代码如下:private void radioButton1_CheckedChanged(object sender, EventArgs e)label2.ForeColor = Color.Black;foreach (Control control in this.Controls)if (control is RadioButton)if (RadioButton)control).Checked)label2.Text = 您的答案是:+(RadioButton)control).Text;(4)当用户单击“提交”按钮时,触发按钮的Click事件。判断用户选中的结果是否正确,使用Label控件的ForeColor属性设置字体样式。具体代码如下:private void button1_Click(object sender, EventArgs e)label2.ForeColor = Color.Red;if (radioButton2.Checked)label2.Text = 恭喜您,回答正确;elselabel2.Text = 对不起,回答错误;(5)运行本实例的代码,选中单选按钮的效果如图10-7所示。单击“提交”按钮的效果如图10-8所示。 图10-7 选中单选按钮的运行效果 图10-8 单击提交按钮的运行效果4个RadioButton控件都触发同一个事件,打开控件的【属性】窗格,查看事件,找到CheckChange事件,单击该事件后面的小图标,选择radioButton1_CheckedChanged事件即可。10.3.3 CheckBox控件CheckBox控件表示复选框,用来表示某个选项是否被选中,常用于为用户提供是/否或真/假的选项。例如,用户可以选择多个爱好,这些爱好可以使用CheckBox控件。它和RadioButton控件的相同处在于都是表示用户的选项;而不同之处在于RadioButton控件一次只能选择一个单选按钮,CheckBox控件则表示可以选择任何的数量。CheckBox控件常用的属性如表10-10所示。表10-10 RadioButton控件的常用属性属性名说明Checked表示该控件是否已经选中,默认为FalseCheckAlign获取或设置RadioButton控件的复选框部分的位置AutoCheck单击控件时,Checked的值和外观是否自动更改,默认为TrueCheckState获取或设置CheckBox的状态,默认为UncheckedThreeState指示CheckBox是否会允许三种选中状态,而不是两种状态CheckState属性的返回值是Checked和Unchecked;如果ThreeState属性被设置为True,则CheckState还可能返回Indeterminate。【实践案例10-4】例如,本案例模拟实现用户多项选择的效果,具体步骤如下:(1)创建名称为CheckBoxForm的窗体,设置窗体的Name属性和Text属性。(2)从【工具箱】中向该窗体添加2个Label控件、4个CheckBox控件和1个Button控件,设计效果如图10-9所示。用户可以根据相应的控件进行布局。图10-9 CheckBox控件的设计效果(3)单击4个CheckBox控件时,触发控件的CheckedChanged的事件,动态的显示用户选择的信息。该事件的代码如下所示:private void ckbLiu_CheckedChanged(object sender, EventArgs e)label2.Text = 您的答案是:;if (ckbLiu.Checked)label2.Text += ckbLiu.Text + ;/* 省略其它CheckBox选中的情况 */if (!ckbLiu.Checked)label2.Text.Replace(ckbLiu.Text, );/* 省略其它CheckBox未被选中的情况 */(4)单击“提交”按钮时,触发按钮的Click事件,判断用户提交的信息是否正确。其中Contains()方法判断Label控件中是否包含某个字符串。具体代码如下所示:private void btnSure_Click(object sender, EventArgs e)if (!ckbLiu.Checked & !ckbMao.Checked & !ckbZhou.Checked & !ckbZhu.Checked)label2.Text = 请选择答案,再提交;else if (label2.Text.Contains(周恩来) & label2.Text.Contains(朱德) & label2.Text.Contains(毛泽东)label2.Text = 恭喜您,回答完全正确;elselabel2.Text = 对不起,回答错误;(5)运行本实例的代码,选中复选框的效果如图10-10所示。单击“提交”按钮的运行效果如图10-11所示。 图10-10 选中复选框时的运行效果 图10-11 单击提交按钮的运行效果10.3.4 NotifyIcon控件NotifyIcon控件指定通知区域中创建图标,通知区域中的图标是一些进程的快捷方式,这些进程在计算机后台运行。例如,QQ应用程序在后台运行。NofityIcon控件有多个属性,常见的属性如下所示:l BalloonTipIcon 与气球状工具提示关联的图标。它的值有4个,分别是None(默认值)、Info、Warnning和Errorl BalloonTipText 与气球状工具提示关联的文本l BalloonTipTitle 与气球状工具提示关联的标题l ContextMenuStrip 当用户右击该图标时显示的菜单l Icon 系统栏中显示的图标,并且该属性只接受.ico格式的文件l Text 当鼠标悬停在该图标上时显示的文本l Visible 确定该控件是可见的还是隐藏的如果要在通知区域中(最小化时)显示图标,必须将Visible属性值设为True。每个NotifyIcon控件都在状态区域显示一个图标。例如用户有2个后台进程,并且希望每个后台进程各自显示一个图标,那么用户就必须添加2个NotifyIcon控件。10.4 项目案例1:用户注册功能的实现前两节已经详细介绍了Label、LinkLabel、TextBox、Button以及NotifyIcon等多个控件的知识,本次项目案例就充分利用这些控件实现一个用户注册的功能。【案例分析】本次项目案例实现系统中用户注册的功能,主要包括用户名、用户密码、出生日期、性别、个人空间、爱好和个人介绍信息以及“确定”按钮和“取消”按钮。主要步骤如下:(1)创建名称为Register的窗体,打开【属性】窗格,设置该窗体的属性,包括窗体的标题、窗体的图标和文本等信息。(2)在【工具箱】中双击不同的控件图标,为该窗体添加7个Label控件、2个TextBox控件、1个MaskedTextBox控件、2个RadioButton控件、4个CheckBox控件、1个LinkLabel控件以及1个RichTextBox控件。分别设置这些控件的Name属性和Text属性,表示用户名称、用户密码、出生日期、性别、爱好、个人空间以及个人介绍等信息。最后再添加一个NotifyIcon控件,设置该控件的Name属性、Icon属性和Text属性。(3)打开用户密码的【属性】窗格,将密码框PasswordChar属性的值设置为“”。(4)打开出生日期的【属性】窗格,找到Mask属性,打开【输入掩码】的对话框,选择掩码为短日期格式。(5)目前为止,窗体的设计部分已经完成,设计效果如图10-12所示。图10-12 前台设计代码效果图(6)下面主要看本案例的后台代码,当用户单击个人空间的链接时,触发该控件的LinkClicked事件,跳转至个人空间首页。该事件的具体代码如下:private void llblPersonUrl_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)this.llblPersonUrl.LinkVisited = true;System.Diagnostics.Process.Start(this.llblPersonUrl.Text);上述代码中,将该控件的LinkVisited属性设置为True,设置被访问过的链接。然后使用System.Diagnostics命名空间下Process类的Start()方法和一个URL启动默认浏览器,单击链接跳转到相应的网页。(7)当用户输入个人介绍时,触发KeyPress事件,分别使用该控件的SelectionStart属性、SelectionColor属性和SelectionFont属性设置输入文本的样式。编辑窗口的具体代码如下:private void rtbPersonInfo_KeyPress(object sender, KeyPressEventArgs e)this.rtbPersonInfo.SelectionStart = this.rtbPersonInfo.Text.Length + 1;this.rtbPersonInfo.SelectionColor = Color.Blue;this.rtbPersonInfo.SelectionFont = new Font(this.rtbPersonInfo.SelectionFont, FontStyle.Bold);(8)用户单击“确定”按钮时,更改lblMessage控件的文本,并且设置文本样式。单击“取消”按钮时,重新设置各个输入框和选择框的内容。主要代码如下:private void btnSure_Click(object sender, EventArgs e)/单击“确定”按钮this.lblMessage.ForeColor = Color.DarkBlue;/设置文本样式this.lblMessage.Text = 您已经成功提交信息。;/设置文本内容private void btnCancle_Click(object sender, EventArgs e)/单击“取消”按钮this.lblMessage.ForeColor = Color.Red;/设置文本样式this.lblMessage.Text = 您已经取消操作。;/设置文本内容this.txtName.Text = ;/* 省略重置其他控件的内容 */(9)当单击窗体的关闭按钮时,触发窗体的FromClosing事件,弹出“确定关闭,还是最小化窗体”的提示,实现最小化窗体的效果。双击右下角中应用程序的图标,触发MouseDoubleClick事件,实现在任务栏中重新显示窗体的功能。具体代码如下:private void MyNotifyIcon_MouseDoubleClick(object sender, MouseEventArgs e)this.Show();this.ShowInTaskbar = true;/在任务栏中显示窗体this.WindowState = FormWindowState.Normal;/正常显示窗体private void MyFirstForm_FormClosing(object sender, FormClosingEventArgs e)DialogResult result = MessageBox.Show(要确定关闭应用程序(是),还是要进行最小化(否)?, 关闭提示, MessageBoxButtons.YesNo, MessageBoxIcon.Question);if (result = DialogResult.Yes)Application.Exit();elsee.Cancel = true;this.ShowInTaskbar = false;this.Hide();上述代码中,使用MessageBox类的Show()方法弹出消息框(下一章会具体介绍),Application.Exit()表示退出整个应用程序,ShowInTaskbar属性设置是否在任务栏中显示窗体。(10)到了这里,本案例的控件和后台代码全部介绍完毕。用户输入信息完成后,单击“确定”按钮时,实现效果如图10-13所示。单击“取消”按钮时,实现效果如图10-14所示。 图10-13 单击“确定”按钮运行效果 图10-14 单击“取消”按钮运行效果(11)当用户单击关闭窗体按钮时,弹出关闭提示。如图10-15所示。单击“是”,退出应用程序,单击“否”,应用程序最小化。图10-15 关闭窗体时的运行效果10.5 图形、图像和计时类控件图形和图像类控件主要用来存储和显示图片,图形和图像类控件包括ImageList控件和PictureBox控件。计时类控件是指Timer控件。本节学习如何使用ImageList控件存储图像、使用PictureBox控件显示图像以及使用Timer控件控制图像的显示。10.5.1 ImageList控件ImageList控件用于存储图像,它提供了一个集合,可以在图像列表中存储任意大小的图像,但是每个控件中的图像大小必须相同。ImageList控件常用的属性如表10-11所示。表10-11 ImageList控件的常用属性属性名说明Images它是一个集合,存储在此ImageList控件中的图像ImageSize获取或设置该控件中各个图像的大小,默认为1616,但可以取1256之间的值Tag获取或设置包含有关该控件的其他数据对象ColorDepth用来呈现图像的颜色数,它的默认值是Depth8BitGenerateMember指示是否将为此控件生成成员变量,默认为True如果想要使用ImageList控件中的图像,可以直接调用图像Images属性的索引号就可以了;如果想清空ImageList控件中的图片,直接调用Clear()方法就可以了。下面主要通过一个实例演示如何使用ImageList控件。【实践案例10-5】例如,将ImageList控件和Label控件相结合,实现图片的显示功能。具体步骤如下:(1)添加名称为ImageListForm的窗体,在【工具箱】中双击ImageList控件和Label控件,为该窗体添加1个ImageList控件和2个Label控件,并且将Label控件的Text属性的值设置为空。(2)打开ImageList控件的【属性】窗格,找到Images属性。然后打开【图像集合编辑器】的对话框添加图像。(3)双击窗体触发窗体的Load事件,进入窗体的代码编辑窗口。通过ImageList控件的Images属性的索引获得单张图像,然后赋值到Label控件的Image属性中。具体代码如下所示。private void ImageListForm_Load(object sender, EventArgs e)lblOne.Image = ilLists.Images0;lblThree.Image = ilLists.Images1;(4)运行本案例的代码,最终运行效果如图10-16所示。图10-16 ImageList控件的运行效果10.5.2 PictureBox控件ImageList控件像是图像的储存室,它必须和其他的控件(如PictureBox控件和Label控件等)相结合,实现图像的显示功能。本节就详细介绍PictureBox控件。PictureBox控件用于显示位图、GIF、JPEG、图元文件或图标格式的图形,也可称为图片框。表10-12列出了该控件常用的一些属性。表10-12 PictureBox控件的常用属性属性名说明Image在该控件中显示的图像ImageLocation获取或设置要在PictureBox中显示的图像的路径或URLInitialImage获取或设置在加载主图像时显示在该控件中的图像SizeMode控制PictureBox将如何处理图像位置和控件大小,默认情况为Normal表10-12中,PictureBox控件的SizeMode属性返回值是PictureBoxSizeMode枚举类型。其值的具体说明如下:l Normal 默认值,图像被置于PictureBox控件的左上角。如果图像比包含它的PictureBox大,则该图像将被裁剪掉l StretchImage 图像被拉伸或收缩,以适合PictureBox的大小l CenterImage 如果PictureBox比图像大,则图像将居中显示;如果图像比PictureBox大,则图片将居于PictureBox中心,而外边缘将被裁剪掉l AutoSize 调整PictureBox大小,使其等于所包含的图像大小l Zoom 图像大小按其原有的大小比例被增加或减小10.5.3 Timer控件Timer控件又叫计时器,它可以让程序每隔一定时间重复做一件事情。Timer控件的主要属性如下:l Enabled 是否定时引发事件l Interval 事件发生的频率,以毫秒为单位Timer控件的事件只有一个,就是Tick事件,它表示每当指定间隔时发生的事件。Timer控件除了属性和事件以外,还有常用的两种方法:Start()方法和Stop()方法。Start()方法表示启动计时器;Stop()方法表示停止计时器。【实践案例10-6】在各大浏览器的网站上,用户会常常看到不同的图片在一定的时间内重复轮换。本次实践案例就使用窗体控件实现图片的轮换功能。具体步骤如下:(1)在【解决方案资源管理器】中添加名称为ImagesForm窗体,打开窗体的【属性】窗格,设置窗体的属性。(2)在【工具箱】中双击ImageList控件,保存一组图片;选中ImageList控件,在【属性】窗格中找到Images属性,打开【图像集合编辑器】的对话框,选择要添加的图片,然后修改【属性】窗格中ImageSize属性,按照图片的实际大小设置宽和高。(3)从【工具箱】中添加一个PictureBox控件到窗体上,在【属性】窗格中找到SizeMode属性,设置此属性的值为AutoSize,指定图片框的大小和图像的大小一样。(4)为了增强效果,定时切换图片,还需要一个计时器控件,将它的属性Interval属性设置为1000毫秒(即1秒轮换1张图片)。然后需要编写计时器控件的Tick事件处理程序,控制图片的轮换。Tick事件的具体代码如下:int index = 0;/图像框的索引private void timer1_Tick(object sender, EventArgs e)if (index ilImage.Images.Count - 1)/如果当前显示的图片索引没有到最大值就继续增加index+;else/否则从第一个图片开始显示,索引从0开始index = 0;/设置图片框的图片picShowImage.Image = ilImage.Imagesindex;上述代码中,从图像的第一张图片开始显示,每次引发Tick事件的时候就显示下一张图片,直到显示到最后一张图片再从头开始。(5)在窗体的设计页面添加两个按钮,分别表示图片轮换的开始和暂停。单击这两个按钮,触发按钮的Click事件,调用Timer控件的Start()方法和End()方法。具体代码如下:private void btnStart_Click(object sender, EventArgs e)/单击“开始”按钮this.timer1.Start();private void btnOK_Click(object sender, EventArgs e)/单击“取消”按钮this.timer1.Stop();(6)运行本案例,最终显示的效果如图10-17、图10-18所示。 图10-17 图片轮换单击开始运行效果 图10-18 图片轮换单击暂停运行效果在当前窗体的Load事件中设置PictureBox控件的当前默认图片。将定时器的Enabled属性设置为True,然后需要将Program.cs中运行的窗体设置ImagesForm。10.6 列表类控件在C#中,列表类控件的数据会以列表的形式呈现出来,但是它们呈现的具体方式会不一样。列表类控件包括ListBox控件、CheckedListBox控件、ListView控件和ComboBox控件。10.6.1 ListBox控件ListBox控件可以称为列表框,用于显示一个完整的列表项,用户可从中选择一个或多个选项,并添加、删除一项或多项,达到和用户对话的目的。列表中的每一个元素都被称为一个项。ListBox控件的属性如表10-13所示。表10-13 ListBox控件的常用属性属性名说明Items列表框中的所有选项,使用此属性可以增加和删除选项SelectedIndex列表框中当前选定项目的索引号,如果可以一次选择多个选项,此属性包含选中列表中的第一个选项SelectedItem获取当前选中的项SelectedItems获取当前选中项的集合SelectionMode指示列表框将是单项选择、多项选择还是不可选择。默认值为One表10-13中,SelectionMode属性用于设置列表框的选择模式,它有4个值,如下所示:l None 不能选择任何选项l One 一次只能选择一个选项l MultiSimple 可以选择多个选项l MultiExtended 可以选择多个选项,用户还可以使用Ctrl键、Shift键和箭头进行选择ListBox控件最常用的事件是SelectedIndexChanged事件,当选中选项的索引改变时触发该事件。除属性和事件外,ListBox控件也有许多常用的方法。通过调用这些方法可以让用户更高效地操作控件所列举的列表。常用的方法如表10-14所示。表10-14 ListBox控件的常用方法方法说明FindString()查找ListBox控件中以指定字符串开关的第一个项ClearSelected()清除ListBox控件中的所有选项GetSelected()返回一个表示是否选择一个选项的值Set
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025重庆綦江区公安局辅警岗位招聘220人备考题库含答案详解(研优卷)
- 2025广东广州市越秀区华乐街道办事处招聘居家养老兼社会救助工作人员1人备考题库含答案详解(典型题)
- 2025广东广州大学第二次招聘事业编制工作人员2人参考考点题库及答案解析
- 2025国科大杭州高等研究院智能科学与技术学院招聘项目聘用人员1人参考考点题库及答案解析
- 2025福建福州市司法局社区矫正管理局招聘1人备考题库附答案详解(综合题)
- 2025年杭州西湖区翠苑街道公开招聘编外工作人员2人备考题库含答案详解(轻巧夺冠)
- 2025年杭州市余杭区总工会招聘工会社会工作者4人备考题库含答案详解(综合卷)
- 2025广发银行成都分行社会招聘备考题库(10月)及答案详解(名师系列)
- 2025重庆工业职业技术大学招聘6人备考考点题库及答案解析
- 2025四川乐山市公安局第四批次警务辅助人员招聘40人备考题库附答案详解(a卷)
- 展览展示服务公司安全生产管理制度
- 2025年高职单招《信息技术》试题及答案
- 农机操作与维修课件
- DB11-T 1884-2021 供热与燃气管道工程施工安全技术规程
- 线上品牌授权合同范本
- 沪剧教学课件
- 江苏省水利工程单元工程施工质量验收常用表格(2025.6.18)
- 无人机多旋翼考试题目及答案
- 远离赌博法治宣传课件
- 疾控监督员课件讲解
- 公园保洁服务投标方案
评论
0/150
提交评论