• 1. 第8章 Windows窗体应用程序设计C#程序设计
  • 2. 图形化界面是Windows应用程序的一大特色,C#中的窗体是设计图形化界面的基础,而窗体是由一些控件组成的,合理恰当地使用各种不同的控件,以及熟练掌握各个控件的属性设置,是进行C#程序设计的基础。
  • 3. 本章学习重点: 掌握C#窗体和多文档窗体的属性及设计方法。 掌握C#中各种内部控件的特点。 掌握C#中各种内部控件的属性、方法和事件。 掌握C#中窗体事件处理机制。 掌握C#中使用各种内部控件设计界面美观窗体的方法。
  • 4. 窗体(Form)是一个窗口或对话框,是存放各种控件的容器,可用来向用户显示信息,在C#中可以灵活地使用窗体,既可以同时显示所有的窗体,也可以按需要显示或隐藏某些窗体8.1 窗体设计8.1.1 创建Windows窗体应用程序 1. 创建Windows窗体应用程序的步骤:“新建”->“项目”-> “Windows窗体应用程序”。 一个Windows窗体应用程序中可以包含多个窗体。 2.添加一个窗体的步骤: “项目”->“添加Windows窗体”。标题栏控制按钮边界窗口区
  • 5. 8.1 窗体设计8.1.2 窗体类型 在C#中,窗体分为如下两种类型 1. 普通窗体,也称为单文档界面窗体(SDI窗体)。普通窗体又分为如下两种: 模式窗体。这类窗体在屏幕上显示后用户必须响应,只有在它关闭后才能执行其他的窗体或程序。 无模式窗体。这类窗体在屏幕上显示后用户可以不必响应,可以随意切换到其他窗体或程序进行操作。新建窗体默认为无模式窗体。 2. MDI父窗体,也称为多文档界面窗体(MDI窗体),其中可以放置多个MDI子窗体。
  • 6. 8.1.3 窗体的常用属性 1. 布局属性 如表8-1所示 2. 窗口样式属性 如表8-2所示 3. 外观样式属性 如表8-3所示 4. 行为属性 如表8-5所示8.1 窗体设计
  • 7. 表8-1 窗体常用的布局属性及说明布局属性说明Location获取或设置窗体左上角在桌面上的坐标,有X和Y两个值,表示窗体左上角的坐标。默认值为坐标原点(0,0)Size获取或设置窗体的大小,有Height和Width两个值,表示窗体的高度和宽度StartPosition获取或设置运行时窗体的起始位置。其取值为如下之一: Manual:窗体的位置由Location属性确定 CenterScreen:窗体在当前显示窗口中居中,其尺寸在窗体大小中指定 WindowsDefaultLocation:窗体定位在Windows默认位置,其尺寸在窗体大小中指定(默认值) WindowsDefaultBounds:窗体定位在Windows默认位置,其边界也由Windows默认确定 CenterParent:窗体在其父窗体中居中WindowsState获取或设置窗体的窗口状态,取值为如下之一: Normal:默认大小的窗口(默认值) Minimized:最小化的窗口 Maximized:最大化的窗口8.1 窗体设计
  • 8. 表8-2 窗体常用的窗口样式属性及说明窗口样式属性说明CotrolBox获取或设置一个值,该值指示窗体的标题栏中是否显示控件框HelpButton获取或设置一个值,该值指示是否在窗体的标题框中显示“帮助”按钮Icon获取或设置标题栏中的图标(在标题栏中最左边)MaximizeBox获取或设置一个值,该值指示是否在窗体的标题栏中显示“最大化”按钮 MinimizeBox获取或设置一个值,该值指示是否在窗体的标题栏中显示“最小化”按钮ShowIcon获取或设置一个值,该值指示是否在窗体的标题栏中显示图标ShowInTaskBar获取或设置一个值,该值指示是否在Windows任务栏中显示窗体TopMost获取或设置一个值,该值指示该窗体是否应显示为最顶层窗体8.1 窗体设计
  • 9. 表8-3 窗体常用的外观样式属性及说明外观样式属性说明Backcolor获取或设置窗体的背景色BackGroundImage获取或设置在窗体中显示的背景图像Cursor获取或设置当鼠标位于控件上时显示的光标形状Font获取或设置窗体中显示的文本的字体,有关Font的常用属性如表8-4所示ForeColor获取或设置窗体的前景色FormBorderStyle获取或设置窗体的边框样式,取值为如下之一: None:无边框 FixedSingle:固定的单行边框 Fixed3D:固定的三维边框 FixedDilog:固定的对话框样式的粗边框 Sizable:可调整大小的边框(默认值) SizableToolWindows:可调整大小的工具窗口边框 Text在窗体顶部的标题栏中显示的标题文本8.1 窗体设计
  • 10. 表8-4 Font的常用属性及说明Font的属性说明Name获取此Font的字体名称Size获取此Font的大小,单位采用Unit属性指定的单位Unit获取此Font的度量单位Bold获取一个值,该值指示此Font是否为粗体Italic获取一个值,该值指示此Font是否为斜体Strikeout获取一个值,该值指示此Font是否指定贯穿字体的横线Underline获取一个值,该值指示此Font是否有下划线8.1 窗体设计
  • 11. 表8-5 常用的行为属性及说明行为属性说明AllowDrop获取或设置一个值,该值指示控件是否可以接受用户拖放到它上面的数据Enabled获取或设置一个值,该值指示控件是否可以对用户交互做出响应ImeMode获取或设置控件的输入法编辑器(IME)模式8.1 窗体设计
  • 12. 8.1.4窗体的常用事件表8-6 窗体常用的事件及说明事件说明Activated当使用代码激活或用户激活窗体时发生Click单击控件时发生DoubleClick双击控件时发生Enter进入控件时发生FormClosed关闭窗体后发生FormClosing关闭窗体时发生GotFocus在控件接收焦点时发生Load在一次次显示窗体前发生MouseClick当鼠标单击控件时发生MouseDoubleClick当鼠标双击控件时发生MouseDown当鼠标指针位于控件上并按下鼠标左键时发生MouseEnter当鼠标指针进入控件时发生MouseMove当鼠标指针移到控件上时发生MouseUp当鼠标指针位于控件上并释放鼠标左键时发生8.1 窗体设计
  • 13. 8.1.5 窗体的常用方法表8-7 窗体常用的方法及说明方法说明方法说明Activate激活窗体并给与它焦点OnMouseDoubleClick引发MouseDoubleClick事件 Close关闭窗体OnMouseDown引发MouseDown事件Focus为控件设置输入焦点OnMouseEnter引发MouseEnter事件Hide对用户隐藏控件OnMouseLeave引发MouseLeave事件OnClick引发Click事件OnMouseMove引发MouseMove事件OnClosed引发Closed事件Refresh强制控件使其工作区无效并立即重绘自身或任何子控件OnClosing引发Closing事件Show将窗体显示为无模式对话框OnDoubleClick引发DoubleClick事件ShowDialog将窗体显示无模式对话框OnFormClosed引发FormClosed事件OnFormClosing引发FormClosing事件OnGotFocus引发GotFocus事件OnLoad引发Load事件参考实例P8-1OnMouseClick引发MouseClick事件8.1 窗体设计
  • 14. 8.1.6 窗体上各事件的引发顺序当一个窗体启动时,执行事件过程的次序如下: (1)本窗体上的Load事件过程 (2)本窗体上的Activated事件过程 (3)本窗体上的其他Form级事件过程 (4)本窗体上包含对象的相应事件过程当一个窗体被卸载时,执行事件过程的次序如下: (1)本窗体上的Closing事件过程 (2)本窗体上的FormClosing事件过程 (3)本窗体上的Closed事件过程 (4)本窗体上FormClosed事件过程8.1 窗体设计
  • 15. 8.1.7 焦点与Tab键次序焦点(Focus)是指当前处于活动状态的窗体或控件。在Windows系统中,任一时刻可运行几个应用程序,但只有具有焦点的应用程序的窗口才有活动标题栏,才能接受用户输入。而在有多个控件的Windows窗体中,只有具有焦点的控件才可以接受用户的输入。当单击控件或按下控件的访问键时,均可使其获得焦点。使用Focus方法可通过程序使对象获得焦点当单击一个窗体或控件使其获得焦点时,将先发生Click事件,然后发生GotFocus事件。失去焦点时,将发生LostFocus事件。命令按钮、选项按钮或复选框具有焦点时,其周围显示一个虚线框,文本框具有焦点时,插入光标在文本框中闪耀。只有控件的Enabled和Visible属性为True时,该控件才能接收焦点。8.1 窗体设计
  • 16. Tab键次序就是在按Tab键时,焦点在控件间移动的顺序。当向窗体中放置控件时,系统会自动按顺序为每个控件指定一个Tab键顺序,其值反映在控件的TabIndex属性中。第一个控件的TabIndex属性为0,依次类推。可以使用“视图”——“Tab键顺序”菜单命令查看各种控件的TabIndex属性值。再次选择“视图”——“Tab键顺序”菜单命令,则不显示TabIndex属性值。8.1.7 焦点与Tab键次序8.1 窗体设计
  • 17. 控件都直接或间接派生于System.Windows.Forms.Control基类,它负责绘制容器中的内容,容器可以是一个窗体,也可以是一个控件。8.2.1 控件概述Control类,有一个Controls属性,表示控件中包含的所有其他控件的集合。下列语句表示将文本标签加入到窗体控件中: this.Controls.Add(this.label1);8.2 常用的控件设计控件是包含在窗体上的对象,是构成用户界面的基本元素。
  • 18. 表8-8 控件共有的属性属性类型说明NameString获取或设置控件的名称BackColorColor获取或设置控件的背景颜色ForeColor Color获取或设置控件的前景颜色Cursor Cursors获取或设置当鼠标指针位于控件上时显示的光标Visiblebool控件是否可见Enablebool控件是否可用FontFont通过它可以改变控件显示的文本字体TextString控件显示的文本SizeSize控件的大小(宽度和高度)LocationPoint控件的位置(相对于它所在窗体左上角的X,Y坐标)8.2.1 控件概述8.2 常用的控件设计
  • 19. 由于文本框控件无法提供类似Microsoft Word能够输入、显示或处理具有格式的文本,此时可以使用富文本框控件RichTextBox8.2.2 富文本框控件8.2 常用的控件设计RichTextBox控件继承自TextBox控件,它具有TextBox控件所有的方法和属性,还增加了让用户能输入并编辑文本的属性,同时提供比标准的TextBox控件更高级的格式设置,如字体和颜色设置。还可以将文本直接赋值给控件,以及从Rich Text格式文档(.rtf文件)或纯文本文件加载文件内容等。富文本框控件不受64KB字符容量的限制。
  • 20. 表8-9 富文本框控件的常用属性及说明属性说明AutoWordSelection获取或设置一个值,通过该值指示是否启用自动选择字词SelectionFont获取或设置当前选定文本或插入点的字体SelectionColor获取或设置当前选定文本或插入点的文本颜色SelectionProtected获取或设置一个值,通过该值指示是否保护当前选定文本SelectionIndent获取或设置RichTextBox的左边缘与当前选定文本或添加到插入点后的文本的左边缘的距离(以像素为单位)SelectionLength获取或设置控件中选定的字符数SelectionStart获取或设置文本框中选定的文本起始点Text获取或设置多格式文本框中的当前文本8.2.2 富文本框控件8.2 常用的控件设计1. 富文本框的属性
  • 21. 表8-10 富文本框控件的常用事件及说明事件说明SelectionChanged控件内的选定文本更改时发生TextChangedRichTextBox控件的内容有任何改变都会引发此事件8.2.2 富文本框控件8.2 常用的控件设计1. 富文本框的事件和方法
  • 22. 表8-11 富文本框的常用方法及说明方法说明LoadFile 将现有RTF或ASCII文本文件加载到富文本框中,也可以从已打开的数据流中加载数据,基本格式为 richTextBox1.LoadFile(文件名,文件类型) 其中“文件类型”为枚举类型RichTextBoxStreamType,其取值如下: PlainText:用空格式代替对象链接与嵌入(OLE)对象的纯文本流 RichNoOleObjs:用空格式代替OLE对象的丰富文本格式(RTF格式)流。该值只在用于RichTextBox控件的SaveFile方法时有效。 RichText:RTF格式流 TextTextOleObjs:具有OLE对象的文本表示形式纯文本流。该值只在用于RichTextBox控件的SaveFile方法时有效。 UnicodePlainText:包含用空格式代替对象链接与嵌入(OLE)对象的文本流。该文本采用Unicode编码SaveFile将富文本框中的内容保存到文件,其用法和LoadFile类似Find在富文本框内搜索文本Clear将富文本框中的内容清空8.2.2 富文本框控件8.2 常用的控件设计1. 富文本框的事件和方法
  • 23. 8.2.2 富文本框控件8.2 常用的控件设计1. 富文本框的事件和方法private void Form1_Load(object sender, EventArgs e) { richTextBox1.LoadFile("F:\\Codes\\file.rtf",RichTextBoxStreamType.RichText); }
  • 24. 8.2.3 分组框控件8.2 常用的控件设计分组框控件(GroupBox)的作用主要是区分一个控件组。在实际运用中常常和其他控件一起使用。1. 分组框控件的属性 GroupBox控件的常用属性只用Text和Visible。Text用于设置分组框的标题,Visible属性用来设置指示是否显示该控件,当Visible属性值设为false时,该分组框中的对象都将一起隐藏。2. 分组框控件的事件和方法 GroupBox控件也有事件和方法,但很少使用。
  • 25. 8.2.4 面板控件8.2 常用的控件设计面板控件(Panel)的作用与分组框相似,也是用于区分一个控件组。1. 面板控件的属性 面板控件没有Text属性。其常用属性如表8-12所示。2. 面板控件的事件和方法 Panel控件也有事件和方法,但很少使用。表8-12 面板控件的常用属性及说明属性说明BorderStyle用于设置边框的样式,可取以下值之一: None:无边框(默认值) FixedSingle:单线边框 Fixed3D:3D立体边框AutoScroll设置是否显示滚动条,设置为True,则显示滚动条,设置为False(默认值)则不显示滚动条
  • 26. 8.2.5 复选框控件8.2 常用的控件设计复选框控件(CheckBox)属于选择类控件,用于设置需要或不需要某一选项。运行时,用鼠标单击复选框左边的方框,方框中会出现一个” √”1. 复选框的属性 复选框的常用属性如表8-13所示。2. 复选框控件的事件和方法 复选框的常用事件为Click,当用户在一个复选框上单击鼠标按钮时引发。表8-13 复选框的常用属性及说明属性说明Appenrance获取或设置一个值,控制复选框的外观,设为Button时为按钮类型,设为Normal时为普通复选框类型(默认值)CheckAlign设置控件中复选框的位置,默认在左边Checked获取或设置一个bool值,该值指示是否已选中控件。如果为True,则是指选中状态,否则为False(默认值)TextAlign复选框上文字的对齐方式参考实例P8_2
  • 27. 8.2.6 单选按钮控件8.2 常用的控件设计单选按钮控件(RadioButton) 与复选框的功能非常相近。只能从一组中的多个选项中选择一项(常将单选按钮放在一个分组框控件中)1. 单选按钮的属性 单选按钮的常用属性与复选框的相同,如表8-13所示。2. 单选按钮的事件和方法 单选按钮的常用事件为Click,当用户在一个单选按钮上单击鼠标按钮时引发参考实例P8_3
  • 28. 8.2.7 图片框控件8.2 常用的控件设计图片框控件(PictureBox) 用于在窗体的特殊位置上放置图形信息,也可以在其上放置多个控件,因此它可以作为其他控件的容器。1. 图片框的属性 图片框的常用属性及说明如表8-14所示。表8-14 图片框的常用属性及说明属性说明BorderStyle用于设置图片框的边框样式,有None、FixedSingle和Fixed3D三个取值BackgroundImage获取或设置图片框中显示的背景图像,在运行时可使用Image.FromFile函数加载图像Image获取或设置图片框中显示的图像。在运行时可使用Image.FromFile函数加载图像SizeMode指示如何显示图像,可取下列值之一 Normal(默认值):图像置于图片框的左上角,如果图像超过图片框则被裁减 AutoSize:调整图片框大小,使其等于包含的图像大小 CenterImage:居中显示图像,超出边缘被裁减 StretchImage:拉伸或收缩图像以适合图片框的大小 Zoom:图像大小按其原有的大小比例被缩放
  • 29. 8.2.7 图片框控件8.2 常用的控件设计2. 图片框的事件和方法 图片框的常用事件及说明如表8-15所示参考实例P8_4表8-15 图片框的常用事件及说明事件说明Click单击图片框时发生DoubleClick双击图片框时发生MouseDown当鼠标指针位于图片框上并按下鼠标时发生MouseEnter当鼠标指针进入图片框时发生MouseHover当鼠标指针停放在图片框上时发生MouseLeave当鼠标指针离开图片框时发生MouseMove当鼠标指针移到图片框上时发生MouseUp当鼠标指针位于图片框上并释放鼠标时发生MouseWheel在移动鼠标滑轮并且图片框有焦点时发生Move在移动图片框时发生
  • 30. 8.2.8 组合框控件8.2 常用的控件设计组合框控件(ComboBox)用于从一个列表中一次只能选取或输入一个选项,其主要特点是具有带向下箭头的方框。在程序运行时,单击此按钮就会下拉出一个列表框供用户选择项目,另外还可以在组合框上方的框中输入数据。
  • 31. 8.2.8 组合框控件8.2 常用的控件设计1. 组合框的属性 组合框属性很多,常用的属性及说明如表8-16所示表8-16 组合框的常用属性及说明属性说明DropDownStyle获取或设置指定组合框样式的值,可取下列值之一 DropDown(默认值):文本部分可编辑。用户必须单击箭头按钮来显示列表部分。 DropDownList:用户不能直接编辑文本部分。用户必须单击箭头按钮来显示列表部分。 Single:文本部分可编辑,列表部分总是可见。DropDownWidth获取或设置组合框下拉部分的宽度(以像素为单位)DropDownHeight获取或设置组合框下拉部分的高度(以像素为单位)Items表示该组合框中所包含的所有项的集合SelectedItem获取或设置当前组合框中的选定项SelectedIndex获取或设置当前组合框中选定项的索引SelectedText获取或设置当前组合框中选定项的文本Sorted指示是否对组合框中的项进行排序
  • 32. 8.2.8 组合框控件8.2 常用的控件设计2. Items的属性和方法 组合框的Items属性是最重要的属性,它是存放组合框中所有项的集合,对组合框的操作实际上就是对该属性即项集合的操作,Items的属性及说明如表8-17所示表8-17 Items的常用属性及说明属性说明Count组合框的项集合中项的个数
  • 33. 8.2.8 组合框控件8.2 常用的控件设计表8-18 Items的常用方法及说明Items的方法说明Add向ComboBox项集合中添加一个项AddRange向ComboBox项集合中添加一个项的数组Clear移除ComboBox项集合中的所有项Contains确定指定项是否在ComboBox项集合中Equals判断是否等于当前对象GetType获取当前实例的TypeInsert将一个项插入到ComboBox项集合中指定的索引处IndexOf检索指定的项在ComboBox项集合中的索引Remove从ComboBox项集合中移除指定的项RemoveAt 移除ComboBox项集合中指定索引处的项
  • 34. 8.2.8 组合框控件8.2 常用的控件设计3. 组合框的事件和方法 组合框的常用事件及说明如表8-19所示参考实例P8_5表8-19 组合框的常用事件及说明事件说明Click单击控件时发生TextChanged在Text属性值改变时发生SelectedIndexChanged在SelectedIndex属性值改变时发生KeyPress在控件有焦点的情况下按下任何键时发生
  • 35. 8.2.9 列表框控件8.2 常用的控件设计列表框控件(ListBox)是一个为用户提供选择的列表,用户可从列表框中列出的一组选项中用鼠标选取一个或多个所需要的选项。如果有较多的选择项,超出规定的区域而不能一次全部显示时,C#会自动加上滚动条。
  • 36. 8.2.9 列表框控件8.2 常用的控件设计1. 列表框的属性 列表框属性很多,常用的属性及说明如表8-20所示表8-20 列表框的常用属性及说明属性说明MultiColumn获取或设置列表框控件是否支持多列,默认设置为False,不支持多列SelectedIndex获取或设置列表框控件中当前选定项的索引SelectedIndices获取一个集合,它包含所有当前选定项的索引SelectedItem获取或设置列表框控件中的当前选定项SelectedItems获取一个集合,它包含所有当前选定项Items表示列表框控件所有项的集合SelectionMode获取或设置列表框控件的选择模式,可选一下取值之一: One:表示只能选择一项 None:表示无法选择 MultiSimple:表示可以选择多项 MultiExtended:表示可以选择多项,也可以使用Shift键和Ctrl键Text当前选取的选项文本
  • 37. 8.2.9 列表框控件8.2 常用的控件设计2. Items的属性和方法 列表框的Items和组合框的Items一样,它是存放列表框中所有项的集合,列表框的Items的属性及说明如表8-17所示,其方法及说明如表8-18所示。表8-21 列表框的常用事件及说明事件说明Click单击控件时发生SelectedIndexChanged在SelectedIndex属性值改变时发生KeyPress在控件有焦点的情况下按下任何键时发生3. 列表框的事件和方法 列表框的常用事件及说明如表8-21所示参考实例P8_6
  • 38. 8.2.10 带复选框的列表框控件8.2 常用的控件设计带复选框的列表框控件(CheckedListBox)和ListBox控件相似,也是用来显示一系列列表项的,不过每个列表项前面都有一个复选框,这样,是否选中了某个列表项就可以很清楚的表现出来。
  • 39. 8.2.10 带复选框的列表框控件8.2 常用的控件设计1. CheckedListBox的属性 CheckedListBox控件继承了ListBox控件,所以其大部分属性、事件和方法都来自ListBox类,如:Items属性、Items.Add方法和Items.Remove方法等,它还有特有的属性和方法。其特有的属性及说明如表8-22所示表8-22 CheckedListBox的常用属性及说明属性说明CheckedOnClick该属性为True时,单击某一列表项就可以选中它。默认的属性值为False,此时,单击列表项只是改变了焦点,再次单击时才会选中该列表项CheckedIndices该带复选框的列表框中选中索引的集合CheckedItems该带复选框的列表框中选中项的集合MultiColumn该属性值为True时,表示以多列显示,为False时只以单列显示ColumnWidth当多列显示时,该属性指出每列的宽度TreeCheckBoxes该属性为True时,选项前面的复选框以立体的方式显示,否则以平面的方式显示
  • 40. 8.2.10 带复选框的列表框控件8.2 常用的控件设计表8-23 CheckedListBox的常用事件及说明方法说明GetItemCheckState该方法用于取得指定列表项的状态,即该列表项是否被选中,该方法有一个整型参数,用来确定该方法返回哪个列表项的状态。GetItemChecked返回指示指定项是否选中的值,为True时表示已选中SetItemCheckState该方法用于设置指定列表项的状态,即设置该列表项是选中或未选中,还是处于不确定状态。该方法有两个参数,第一个参数是整型参数,用来指定所设定的是哪一个列表项。第二个参数可选以下值之一。 CheckState.Checked:选中 CheckState.UnChecked:未选中 CheckState.Indeterminate:不确定 SetItemChecked将制定索引处的项的状态设置为CheckState.Checked2. CheckedListBox的事件和方法 CheckedListBox的常用事件有Click和DoubleClick,常用方法及说明如表8-23所示参考实例P8_7
  • 41. 8.2.11 定时器控件8.2 常用的控件设计定时器控件(Timer),其特点是每隔一定的时间间隔就会自动执行一次定时器事件。所谓的时间间隔,指的是定时器事件两次调用之间的时间间隔,一般以毫秒(ms)为基本单位
  • 42. 8.2.11 定时器控件8.2 常用的控件设计1. 定时器的属性 定时器控件的常用属性及说明如表8-24所示表8-24 定时器的常用属性及说明属性说明Enabled设置是否启用定时器控件,若设置为True,表示启动定时器控件开始计时;否则,表示暂停计时器的使用。默认为FalseInterval设置两个定时器事件之间的时间间隔。设置时以毫秒为单位,范围为0~65535ms
  • 43. 8.2.11 定时器控件8.2 常用的控件设计表8-25 定时器的常用方法及说明方法说明Start启动定时器,也可以将Enabled属性设置为True来启动定时器Stop停止定时器,也可以将Enabled属性设置为False来启动定时器2. 定时器的事件和方法 定时器的主要事件就是Tick事件,在每隔Interval指定的事件间隔就运行一次该事件方法,定时器的常用方法及说明如表8-25所示参考实例P8_8
  • 44. 8.2.12 滚动条控件8.2 常用的控件设计滚动条控件分为两种类型,即水平滚动条(HScrollBar)和垂直滚动条控件(VScrollBar),滚动条通常和文本框、列表框等一起使用,通过它可以查看列表项目和数据,还可以进行数值输入。借助最大值和最小值设置,并配合滚动条中移动滚动块的位置,就能读取用户指定的数值。
  • 45. 8.2 常用的控件设计1. 滚动条的属性 滚动条的常用属性及说明如表8-26所示表8-26 滚动条的常用属性及说明属性说明Maximum表示滚动条的最大值Minimum表示滚动条的最小值Value表示目前滚动条所在位置对应的值LargeChange设置滚动条的最大变动值SmallChange设置滚动条的最小变动值8.2.12 滚动条控件
  • 46. 8.2 常用的控件设计表8-27 滚动条的常用事件及说明事件说明Scroll当鼠标压住滚动条上的滑块进行移动,滑块被重新定位时发生Change当改变Value的属性值时发生2. 滚动条的事件和方法 滚动的方法很少使用,滚动条的常用事件及说明如表8-27所示参考实例P8_98.2.12 滚动条控件
  • 47. 8.2.13 月历控件8.2 常用的控件设计月历控件(MonthCalendar),可用于显示一个月或几个月的月历。
  • 48. 8.2 常用的控件设计1. 月历控件的属性 月历控件的常用属性及说明如表8-28所示表8-28 月历控件的常用属性及说明属性说明MonthlyBoldedDate该属性值为DateTime数组类型,用于设置要用粗体显示一个月中的日期BolderDate该属性值为DateTime数组类型,用于设置要用粗体显示的日期MinDate获取或设置可选择日期的最小月历日期MaxDate获取或设置可选择日期的最大月历日期SelectionRange获取或设置在月历中选择日期的范围SelectionStart获取或设置所选日期范围的开始日期ShowWeekNumbers获取或设置是否在月历左方,列出某个星期是本年度的几个星期ShowToday获取或设置是否在月历的底部显示“今天”的日期ShowTodayCircle获取或设置是否在当前的日期上加一个圆圈TodayDate获取或设置当前的日期值8.2.13 月历控件
  • 49. 8.2 常用的控件设计表8-29 月历控件的常用事件及说明事件说明DateChanged当日期改变时发生此事件DateSelected当日期被选择时发生此事件2. 月历控件的事件和方法 月历控件的方法很少使用,月历控件的常用事件及说明如表8-29所示8.2.13 月历控件
  • 50. 8.2.14 日期/时间控件8.2 常用的控件设计日期/时间控件(DateTimePicker),其外观像一个组合框,用于显示日期和时间。而当单击下拉箭头时,就会出现一个按月份显示的日历,可以从中选择日期。
  • 51. 8.2 常用的控件设计1.日期/时间控件的属性 日期/时间控件的常用属性及说明如表8-30所示表8-30 日期/时间控件的常用属性及说明属性说明Format用于设置显示日期/时间的格式,可选以下值之一 Custom:以自定义格式显示日期/时间值 Long:以用户操作系统设置的长日期格式显示日期/时间值 Short:以用户操作系统设置的短日期格式显示日期/时间值 Time:以用户操作系统设置的时间格式显示日期/时间值CustomFormat用于设置自定义格式的字符串,当设置Format属性为CustomFormat时,使用此格式MinDate获取或设置可选择日期的最小日期MaxDate获取或设置可选择日期的最大日期ShowCheckBox获取或设置一个值,该值指示在选择日期的左侧是否显示一个复选框ShowUpDown获取或设置一个值,该值指示是否使用数值调节按钮调整日期/时间值Value用于获取或设置当前日期8.2.14 日期/时间控件
  • 52. 8.2 常用的控件设计2. 日期/时间控件的事件和方法 日期/时间控件的常用事件是ValueChanged,当选择的日期改变时,引发此事件。日期/事件控件的方法很少使用。8.2.14 日期/时间控件参考实例P8_10
  • 53. 8.2.15 超链接标签控件8.2 常用的控件设计超链接标签控件(LinkLabel),同Label控件十分相似,不同之处在于LinkLabel控件具有超级链接功能,可以使用此控件超链接到一个网站的站点或网页上,也可以使用它链接到其他的应用程序。LinkLabel控件中的大部分属性、方法和事件都是从Label控件继承来的,但它有几个特殊的用于超链接的属性和事件。
  • 54. 8.2 常用的控件设计1.LinkLabel控件的属性 LinkLabel控件的常用属性及说明如表8-31所示表8-31 LinkLabel控件的常用属性及说明属性说明ActiveLinkColor 获取或设置显示超链接部分的颜色LinkArea获取或设置该控件显示的标签文本中超链接部分的区域大小。该属性设置两个值,第一个值为区域起始字符的位置,第二个值为区域的长度DisabledLinkColor获取或设置该控件不用时标签文本中链接部分的颜色LinkColor获取或设置未连接过的超链接的文本的颜色VisitedLinkColor获取或设置已连接过的超链接的文本的颜色8.2.15 超链接标签控件
  • 55. 8.2 常用的控件设计2. LinkLabel控件的事件和方法 LinkLabel控件的常用事件及说明如表8-32所示,LinkLabel控件的方法很少使用。参考实例P8_118.2.15 超链接标签控件表8-32 LinkLabel控件的常用事件及说明事件说明LinkClicked 当鼠标移到标签文本中的超链接文本部分时,会出现一只手的小图标,这时单击此超链接文本部分,将会发生此事件。通常在此事件过程中,使用System.Diagnostics.Press.Start方法打开指定的网页。MouseMove当在LinkLabel控件上移动鼠标时,将发生此事件,并且伴随鼠标的移动,将连续不断的引发此事件
  • 56. MDI父窗体:也称为多文档界面窗体,其中可以放置多个MDI子窗体。使用多文档应用程序,用户可以同时编辑多个文档。如Word、Exel应用程序都是多文档界面应用程序。前面创建的都是单文档界面(SDI)应用程序,仅支持一次打开一个窗口或文档,如果要编辑多个文档,则必须创建应用程序的多个实例。如记事本程序。8.3 多文档窗体
  • 57. 多文档界面应用程序具有如下特性: (1)所有子窗体均显示在MDI父窗体的工作区内,用户可移动、改变子窗体的大小,但被限制在父窗体内。 (2)当最小化子窗体时,它的图标将显示在MDI父窗体上而不是在任务栏中。 (3)当最大化子窗体时,它的标题与MDI父窗体的标题一起显示在MDI父窗体的标题上。 (4)MDI父窗体和子窗体都可以有各自的菜单,当子窗体加载时覆盖MDI父窗体的菜单。MDI窗体8.3 多文档窗体
  • 58. 一. MDI父窗体的属性、事件和方法MDI父窗体的属性: ActiveMdiChild属性:表示当前活动的MDI子窗体,如没有子窗口则返回null。 IsMdiContainer属性:获取或设置窗体是否为MDI父窗体,值为true时表示为父窗体。为false时表示为普通窗体 MdiChildren属性:以窗体数组形式返回所有MDI子窗体。 8.3 多文档窗体
  • 59. MDI父窗体的方法: LayoutMdi方法,格式如下: MDI父窗体名.LayoutMdi(value);其功能是在MDI父窗体中排列MDI子窗体,参数value决定排列方式,有以下4种取值:MdiLayout.ArrangeIcons:所有MDI子窗体以图标形式排在MDI父窗体中 MdiLayout.TileHorizontal:所有MDI子窗体垂直平铺在MDI父窗体中 Mdi.Layout.TileVertical:所有MDI子窗体水平平铺在MDI父窗体中 MdiLayout.Cascade:所有MDI子窗体层叠在MDI父窗体中8.3 多文档窗体
  • 60. MDI父窗体的事件: MdiChildActivate:当激活或关闭MDI子窗体时将引发该事件。8.3 多文档窗体
  • 61. MDI子窗体的属性: IsMdiChild:获取窗体是否是MDI子窗体。值为true时表示是子窗体,为false表示为普通窗体。 MdiParent:获取或设置该窗体的MDI父窗体。创建MDI父窗体和子窗体参考实例P8_128.3 多文档窗体
  • 62. 8.4 窗体设计的事件机制8.4.1 什么是事件处理程序 事件处理程序是代码中的过程,用于确定事件发生时要执行的操作,事件处理程序是关联到事件的方法。当引发事件时,将执行关联到事件的一个或多个事件处理程序 每个事件处理程序提供两个参数,如窗体中一个Button控件button1的Click事件处理程序如下:
  • 63. 8.4 窗体设计的事件机制8.4.1 什么是事件处理程序 private void button1_Click(object sender, EventArgs e) { //输入相应代码 } 其中第一个参数sender提供对引发事件的对象的引用,第二个参数e传递特定于要处理的事件的对象。 创建事件处理程序有以下两种方法: (1)在Windows窗体设计器中创建事件处理程序 (2)在运行时为Windows窗体创建事件处理程序
  • 64. 8.4 窗体设计的事件机制8.4.2 在Windows窗体中创建事件处理程序在Windows窗体设计器中创建事件处理程序的过程如下: (1)单击要为其创建事件处理程序的窗体或控件(即选中对象) (2)在“属性”窗口中单击“事件”按钮(雷电图案) (3)在可用事件的列表中,单击要为其创建事件处理程序的事件名称 (4)在事件名称右侧的列表框中,输入处理程序的名称,按Enter键。 (5)在代码视图中将适当的代码添加到该事件处理程序中。
  • 65. 8.4 窗体设计的事件机制8.4.3 在运行时为Windows窗体创建事件处理程序在运行时为Windows窗体创建事件处理程序,该操作允许在运行时根据代码中的条件链接相应的事件处理程序,而不是在程序刚启动是链接事件处理程序,在运行时为创建事件处理程序的过程如下: (1)在代码编辑器中打开要向其添加事件处理程序的窗体 (2)对于要处理的事件,将带有其方法签名的方法添加到窗体上,如: (3)将适合应用程序的代码添加到事件处理程序中 (4)确定要创建事件处理程序的窗体或控件 (5)打开对应窗体的.Designer.cs文件,添加指定事件处理程序的代码处理事件。如: button1.Click+=new System.EventHandler(button1_Click) private void button1_Click(object sender, EventArgs e) { //输入相应代码 }
  • 66. 参考实例P8_138.4 窗体设计的事件机制8.4.4 将多个事件连接到Windows窗体中的单个事件处理程序在应用程序设计中,为了简化代码,多个事件可以共用一个事件处理程序。如以下代码表示为按钮button1~button5指定了同一个事件处理程序button_Click。 button1.Click+=new System.EventHandler(button_Click) button2.Click+=new System.EventHandler(button_Click) button3.Click+=new System.EventHandler(button_Click) button4.Click+=new System.EventHandler(button_Click) button5.Click+=new System.EventHandler(button_Click)