1、第六章WinForm应用程序设计本章任务能正确使用控件设计界面能正确编写事件处理程序代码能创建菜单、窗口和多文档界面(MDI)任务任务6.1“6.1“学生信息管理系统学生信息管理系统”项目项目主界面的设计主界面的设计 用户可以使用菜单和工具栏分别实现各项功能任务任务6.1“6.1“学生信息管理系统学生信息管理系统”项目项目主界面的设计主界面的设计 处理菜单响应、工具栏响应事件需要菜单栏(menuStrip)控件、工具栏(ToolStrip)控件和状态栏(statusStrip)控件 分三步实现主界面的设计 1、设置窗体frmMain,作为系统的主界面 2、使用菜单栏(menuStrip)控件设
2、计系统主菜单3、使用工具栏(ToolStrip)控件设计系统工具栏4、使用状态栏(statusStrip)控件设计系统状态栏将窗体命名为frmMain作为系统的主界面 属性说明Form1NamefrmMain Text学生信息管理系统 Icon 添加界面图标Size1024,768StartpositonCenterScreen添加菜单栏 添加菜单栏(menuStrip)控件,到frmMain窗体中,命名为msMain 关键代码回顾/编写编写“退出系统退出系统”菜单项菜单项Click事件响应程序代码事件响应程序代码 private void tsmiQuit_Click(object send
3、er,EventArgs e)Application.Exit();添加工具栏 添加工具栏(ToolStrip)控件,到frmMain窗体中,命名为tsMain 关键代码回顾/编写工具栏编写工具栏“退出退出”按钮按钮Click事件响应程序代码事件响应程序代码 private void tsbntQuit_Click(object sender,EventArgs e)tsmiQuit_Click(sender,e)添加状态栏 添加状态栏(statusStrip),到frmMain窗体中,命名为ssMain menuStrip的常用属性 属性说明Name 控件名称,统一用ms+菜单名 Text
4、菜单项的文本标题 ShortcutKeys 设置与菜单项关联的快捷键 ShowShortcutKeys 显示与菜单项关联的快捷键 ToolStripMenuItem控件常用属性 属性说明Checked表示菜单是否被选中 DropDownItems返回一个项集合,用于菜单项相关的下拉菜单CheckOnClick根据Checked属性显示菜单是否被选中Enabled设置菜单是否可用 ToolStripMenuItem主要事件 事件说明Click 单击菜单项引发该事件CheckedChanged 单击带有CheckOnClick属性的菜单项时,引发这个事件 任务任务6.2“6.2“学生信息管理系统学
5、生信息管理系统”项目项目登陆界面的设计登陆界面的设计 检查登陆的用户名和密码是否为空 如果用户名和密码不为空,则跳转到“学生信息管理系统”主界面 任务任务6.2“6.2“学生信息管理系统学生信息管理系统”项目项目登陆界面的设计登陆界面的设计当用户单击“取消”按钮时,触发取消按钮的Click事件,执行btnCancel_Click事件处理程序,调用Application.Exit()退出整个应用程序 当用户单击“确定”按钮时,执行btnLogin_Click事件处理程序,首先调用自定义方法TestInput(),当验证用户已经输入了用户名和密码信息才能调用系统的主界面frmMain,并关闭登陆窗
6、口 关键代码回顾/“确定确定”按钮,按钮,Click事件的响应方法事件的响应方法 private void btnLogin_Click(object sender,EventArgs e)if(TestInput()/验证用户已经输入用户名和密码验证用户已经输入用户名和密码 /显示主窗体显示主窗体 frmMain mainform=new frmMain();mainform.Show();/如果验证通过,就显示相应的用户窗体,并将当前登陆窗体设为不可见如果验证通过,就显示相应的用户窗体,并将当前登陆窗体设为不可见 this.Visible=false;关键代码回顾/“取消取消”按钮,按钮,
7、Click事件的响应方法事件的响应方法 private void btnCancel_Click(object sender,EventArgs e)Application.Exit();创建 Windows 程序步骤在 VS 中创建 Windows 应用程序的步骤:1、打开 VS 2、新建项目3、项目类型:Visual C#项目4、模板:Windows 应用程序解决方案资源管理器项目名称项目名称主程序文件,主程序文件,包含包含Main方法方法我们编写代码的文件我们编写代码的文件解决方案名称解决方案名称窗体设计器代码文件,窗体设计器代码文件,代码为代码为VS自动生成自动生成窗体常用属性 属性说
8、明BackColor窗体背景色BackGroundImage设置窗体的背景图片 Text窗体标题栏显示的文字Fore窗体标题字体属性包括字体字体、字号、颜色等WindowState窗体出现时最初的状态(正常、最大化、最小化)Icon窗体标题栏显示的图标窗体的常用事件窗体的常用事件 事件说明TextChange用户加载窗体时发生 Paint控件需要重新绘制时发生MouseMove鼠标指针移过控件时发生KeyPress当TextBox得到焦点并且在用户按下某键并松开时触发为什么使用事件 Windows 系统中处处是事件:鼠标按下、鼠标释放、键盘键按下 Windows 系统通过事件处理来响应用户的请
9、求显示开始菜单显示开始菜单 我的电脑我的电脑窗口打开窗口打开事件触发事件触发 事件响应的结果事件响应的结果 单击单击双击双击事件驱动 Windows 通过随时响应用户触发的事件做出相应的响应事件驱动机制 WinForms 应用程序也是事件驱动的编写事件处理程序 编写事件处理程序的步骤:1、选中控件 2、在“属性”窗口中单击3、找到事件4、在对应的位置填写事件处理程序的方法名称,也可以直接在该处双击鼠标左键,系统将自动给事件处理程序加方法名5、编写处理代码实现窗体间的跳转步骤:1、定义窗体对象2、显示窗体定义窗体对象:定义窗体对象:被调用的窗体类名被调用的窗体类名 窗体对象窗体对象=new 被调
10、用的窗体类名被调用的窗体类名();显示窗体:显示窗体:窗体对象窗体对象.Show();MessageBox 对象 代码分析/最简单的消息框最简单的消息框MessageBox.Show(请输入用户姓名请输入用户姓名“,);/带标题的消息框带标题的消息框MessageBox.Show(请输入用户姓名请输入用户姓名,输入提示输入提示);/带标题、按钮的消息框带标题、按钮的消息框MessageBox.Show(请输入用户姓名请输入用户姓名,输入提示输入提示,MessageBoxButtons.OKCancel);/带标题、按钮、图标的消息框带标题、按钮、图标的消息框MessageBox.Show(请输
11、入用户姓名请输入用户姓名,输入提示输入提示,MessageBoxButtons.OKCancel,MessageBoxIcon.Information);MessageBoxButtons提供按钮的类型提供按钮的类型OKCancel 表示表示“确定确定”、“取消取消”按按钮钮MessageBoxIcon提供图标类型提供图标类型Information 表示消息图标表示消息图标消息框的返回值用户点了哪个按钮?用户点了哪个按钮?DialogResult result;result=MessageBox.Show(请输入用户姓名请输入用户姓名,输入提示输入提示,MessageBoxButtons.OK
12、Cancel,MessageBoxIcon.Information);if(result=DialogResult.OK)MessageBox.Show(你选择了确认按钮你选择了确认按钮);else MessageBox.Show(你选择了取消按钮你选择了取消按钮);代码分析通过通过“.”运算符取得某运算符取得某种消息框的结果种消息框的结果实现窗体间的跳转步骤:1、定义窗体对象2、显示窗体定义窗体对象:定义窗体对象:被调用的窗体类名被调用的窗体类名 窗体对象窗体对象=new 被调用的窗体类名被调用的窗体类名();显示窗体:显示窗体:窗体对象窗体对象.Show();排列控件不美观不美观不友好不友
13、好排列控件对齐 对齐窗体的控件步骤1、选择要对齐的控件 注意:所选的第一个控件为主控件2、“格式”“对齐”,选择对齐的方式 排列控件用Anchor控件 使用Anchor与窗体一起动态调整控件的大小,具体步骤:1、选中需要锚定的控件(可以按下“Ctrl”选择多个控件,一起设置 Anchor 属性)2、单击 Anchor 属性右边的箭头,显示一个编辑器,该编辑器显示一个十字线3、关闭Anchor编辑器排列控件用Dock控件 使用Dock将控件停靠在窗体的边缘或填充窗体,具体步骤:1、选择要停靠的控件。在“属性”窗口中,单击 Dock 属性右边的箭头,打开 Dock 属性编辑器 2、单击表示控件停靠
14、位置按钮,设置停靠方式。任务任务6.3“6.3“学生信息管理系统学生信息管理系统”项目项目学生信息录入界面的设计学生信息录入界面的设计 在界面中录入学生的学号、姓名、性别、出生日期、系部名称、班级名称、联系电话、身份证号、家庭住址和备注信息任务任务6.2“6.2“学生信息管理系统学生信息管理系统”项目项目登陆界面的设计登陆界面的设计用户单击“添加”按钮时触发取消按钮的Click事件,执行btnConfirm_Click事件处理程序将用户输入的信息保存到各个字符串变量中;将字符串变量作为参数,调用自定义方法addStuInfo()来实现向数据库中添加记录的操作(具体方法内容将在第7章中详细介绍)
15、关键代码回顾/“添加添加”按钮,按钮,Click事件的响应方法事件的响应方法 private void btnConfirm_Click(object sender,EventArgs e)/将输入的内容赋值给各个字符串变量将输入的内容赋值给各个字符串变量 string paramStudentID=this.txtStudentID.Text.Trim();if(rbtM.Checked)paramStudentSex=this.rbtM.Text.Trim();else paramStudentSex=this.rbtW.Text.Trim();string paramStudyDate=
16、dtpStudyDate.Value.ToShortDateString();string paramExtendField=this.txtExtendField.Text.Trim();关键代码回顾/调用自定义方法调用自定义方法addStuInfo实现向数据库中添加记录的功能实现向数据库中添加记录的功能 returnValue=addStuInfo(paramStudentID,paramStudentName,paramStudentSex,paramStudyDate,paramDepartName,paramClassName,paramStudentIDCard,paramAddr
17、ess,paramStudentTel,paramExtendField);if(returnValue 0)/根据方法返回值判断添加是否成功根据方法返回值判断添加是否成功 MessageBox.Show(添加成功!添加成功!);else MessageBox.Show(添加不成功添加不成功);RadioButton控件 属性说明name名称,一般用rbt+名称的方式命名Text设置单选按钮控件的显示标题AutoSize自动调整单选按钮控件的大小以适应其内容的大小Checked表示控件的状态。如果控件有一个选中标记,它就是true,否则为falseRadioButton控件 事件说明Check
18、Changed当RadioButton的Checked的值发生改变时发生 Click鼠标单击单选按钮时发生关键代码回顾/“添加添加”按钮,按钮,Click事件的响应方法事件的响应方法 if(rbtM.Checked)paramStudentSex=this.rbtM.Text.Trim();else paramStudentSex=this.rbtW.Text.Trim();RadioButton控件演示示例演示示例CheckBox控件 属性说明ThreeState当属性为false时,复选框控件不允许设置不确定状态(Indeterminate),只可以在代码中把CheckState属性改为I
19、ndeterminateCheckState获取或设计复选框控件的状态,取值分别为Checked(选中)、Unchecked(未选中)和Indeterminate(不确定,控件旁边的复选框通常是灰色的,表示复选框的当前值是无效的,或者无法确定)CheckBox控件事件说明CheckedChanged当复选框的Checked属性发生改变时,就引发该事件。CheckedStateChanged当CheckedState属性改变时,引发该事件。CheckBox控件演示示例演示示例ListBox控件 属性说明Name获取或设置列表框控件的名称,一般用“lst+名称”的方式命名。Items用于存放列表框
20、中的所有选项,是一个集合。使用该属性,可以添加列表项、移除列表项和获得列表项的数目。MultiColumn是否支持多列,当值为 true 时表示支持多列,当值为 false 时不支持多列。SelectedIndex获取或设置ListBox控件中当前选定项从零开始的索引。如果未选定任何项,则返回值为1。Text该属性用来获取或搜索 ListBox 控件中当前选定项的文本。当把此属性值设置为字符串值时,ListBox 控件将在列表框内搜索与指定文本匹配的项并选择该项。若在列表中选择了一项或多项,该属性将返回第一个选定项的文本。ListBox控件 属性说明ColumnWidth在包含多个列的列表框中
21、,这个属性指定列的宽度。SelectedItems它是一个集合可以获取或设置ListBox中当前选定的所有选项。Count用于返回列表框中列表项的个数。Sorted把这个属性设置为true,会使列表框对它包含的选项按照字母顺序排序。SelectionMode 用来获取或设置在ListBox控件中选择列表项的方法。默认为One:一次只能选择一个选项。其它几种模式为:CheckBox控件方法调用格式 说明 Add()ListBox对象.Items.Add(“s”)把字符型参数s添加到“listBox对象”指定的列表框的列表项中Insert()ListBox对象.Items.Insert(n,”s”
22、)把字符型参数s插入到“listBox对象”指定的列表框中索引为n的位置处。IndexOf()ListBox对象.Items.IndexOf(“s”);用于返回指定项s在集合中的索引Remove()ListBox对象.Items.Remove(“s”);从 ListBox对象中移除字符型参数列表项sCheckBox控件方法调用格式 说明 RemoveAt()ListBox对象.Items.RemoveAt(s);从 ListBox对象移除指定索引号的列表项Clear()ListBox对象.Items.Clear()清除列表框中的所有项FindString()ListBox对象.Items.Fi
23、ndString(s)查找列表框中第一个以指定字符串s开头的字符串CheckBox控件演示示例演示示例DateTimePickerDateTimePicker控件控件 DateTimePickerDateTimePicker控件控件 属性说明Name获取或设置DateTimePicker控件的名称,一般用“dtp+名称”的方式命名。Value用于表示当前日期/时间值。若当前日期为“2008年4月22日10点12分28秒”,则表达式“dtpNow.Value”的值为“2008-4-22 10:12:28”。Date用于获取当前日期/时间值的日期部分。若当前日期为“2008年4月22日10点12分
24、28秒”,则表达式“dtpNow.Value.Date”的值为“2008-4-22”。DateTimePickerDateTimePicker控件控件 属性说明Year、Month、Day、Hour、Minute、SecondDayOfWeek、DayOfYear分别用于获取当前日期/时间值的年、月、日、小时、分钟、秒、星期几和当年第几天部分。ShowUpDown指定DateTimePicker控件的显示模式,其默认值为False,表示下拉日历模式。若设置为True,则表示DateTimePicker控件显示数字显示框,此时DateTimePicker控件不具有下拉日期,但具有上下调节箭头。D
25、ateTimePickerDateTimePicker控件控件 属性说明MaxDate表示DateTimePicker控件中可以选择的最大日期值。MinDate表示DateTimePicker控件中可以选择的最小日期值。Format 获取或设置控件中显示的日期和时间格式,默认值为Long,还可以设置为Short、Time和Custom。CustomFormat当Format属性设置为Custom 时,可以用于格式化DateTimePicker控件中显示的日期和(或)时间的自定义格式字符串。例如:“MM/dd/yyyy HH:mm:ss”,这时候日期显示为“八月 26,2010 20:29:35”DateTimePicker控件常用方法 ToLongDateString()方法 用于将DateTimePicker控件的值转换为其等效的长日期字符串表示形式。ToLongTimeString()方法用于将DateTimePicker控件的值转换为其等效的长时间字符串表示形式ToShortDateString()方法用于将DateTimePicker控件的值转换为其等效的短日期字符串表示形式ToShortTimeString()方法用于将DateTimePicker控件的值转换为其等效的短时间字符串表示形式。谢 谢!