1、用控件进行快速开发,第部分 Windows编程,第2章,回顾,窗体常用的属性和事件有哪些?各至少说出3个。 分组框控件(GroupBox)和面板控件(Panel)有什么相同点,有什么区别?,预习检查,排列窗体上的控件有几种方法? MDI 是什么意思? 本章将学习哪几个高级控件?,本章任务,MySchool 应用程序的复杂界面设计 完善管理员用户界面 完善添加学员用户界面 完成关于界面 完成登录界面的输入验证,本章目标,掌握排列窗体控件的几种方式 能够开发简单的 MDI 窗体 能够使用窗体的高级控件 掌握简单的窗体间的数据传递的方法,为什么排列控件,为什么要排列控件?,不美观,不友好,怎样排列控
2、件对齐,对齐窗体的控件步骤 1、选择要对齐的控件注意:所选的第一个控件为主控件 2、“格式” “对齐”,选择对齐的方式,演示示例1:对齐“创建学员用户”窗体控件,为什么使用Anchor,原始窗口,窗口拉大后,使用 Anchor,使用 Anchor(锚定) 的结果!,怎样用Anchor排列控件,锚定控件步骤 1、选择要锚定的控件 2、设置Anchor属性 3、关闭Anchor编辑器,锚定控件 与窗体一起动态调整控件的大小,小技巧:按下 “Ctrl” 选择多个控件,一起设置 Anchor 属性,演示示例2:锚定消息窗体的控件,原始窗口,为什么使用Dock,窗口拉大后,使用 Dock(停靠) 的结果
3、!,使用Dock,怎样用Dock排列控件,停靠控件 将控件停靠在窗体的边缘或填充窗体,停靠控件步骤 1、选择要停靠的控件 2、打开 Dock 属性编辑器 3、设置停靠方式,演示示例3:停靠记事本窗体的控件,小结,排列窗体的控件有几种方式? 每种排列方式的效果是什么?,为什么使用MDI,开始录入文字,在同一记事本应用程序中,不允许创建第二个文本文件,新建一个记事本来打开第二个文本文件,在单文档应用程序中一次只能打开一个文件,什么是MDI,在 MDI 应用程序中可以同时打开多个文件,父窗口,子窗口,创建MDI示例,演示示例4:设置管理员窗体为MDI,怎样创建MDI,创建 MDI 的步骤:1、设置父
4、窗体的 IsMDIContainer 属性2、设置子窗体的 MdiParent 属性,ChildForm childForm = new ChildForm(); childForm.MdiParent = this; childForm.Show();,创建子窗体的对象,设置子窗体的父窗体,显示子窗体,建立子窗体窗口列表步骤:1、在父窗体中添加菜单条2、添加 “窗口”菜单3、设置菜单控件的 MdiWindowListItem 属性,WinForms高级控件,典型的工具条,典型的状态条,WinForms控件工具条,演示示例5:为管理员主窗体添加工具条,WinForms控件状态条,演示示例6:为
5、管理员主窗体添加状态条,工具条和状态条的属性,工具条/状态条的主要属性,工具条和状态条的成员,工具条或状态条按钮和标签的主要属性和事件,WinForms控件选项卡,典型的选项卡,WinForms控件选项卡,演示示例7:使用TabControl,选项卡的属性,选项卡控件 (TabControl) 的属性,WinForms控件图片框,典型的图片框,图片框、图像列表、定时器,演示示例8:创建关于(About)窗体,定时器控件Timer,定时器控件 (Timer) 的属性和事件,模式窗体,演示示例9:模式窗体,显示模式窗体:ShowDialog() 方法,用户输入的验证,判断用户进行了必要的输入和选择
6、,单击“登录”按钮时验证,判断控件的 Text 属性,弹出消息框提示,用单独的方法实现验证,演示示例10:验证登录窗体的用户输入,示例10代码分析,/ 验证用户是否进行了输入和选择 private bool ValidateInput() if (this.txtLoginId.Text.Trim() = “)/ 弹出消息框MessageBox.Show(“请输入用户名“, “输入提示“, MessageBoxButtons.OK, MessageBoxIcon.Information);this.txtLoginId.Focus();return false; / elsereturn tr
7、ue; ,示例10源代码,验证 Text 属性 空格不算输入,将光标停在控件上,验证通过返回真,示例10关键代码:,窗体间的数据传递,在管理员窗体状态条显示当前登录用户名,根据登录类型,跳转到相应的窗体 新建UserHelper类,包括登录名字段,注:字段相当于Java中的属性,窗体间的数据传递,演示示例11:窗体间的数据传递,示例11代码分析,UserHelper 类的字段,public class UserHelper / 用户名、登录类型public static string loginId = “;public static string loginType = “; ,静态的,使用类名访问,public, 在其他类中可以访问,总结,在窗体上排列控件的方式有哪几种? 什么是MDI? 使用什么方法显示模式窗体?,Thank you,