gui代码是事件驱动代码。两种gui应用:WInForms 和 WebForms.
事件驱动:用户个人行为都被封装在很多事件中,事件由操作系统来安排顺序执行。
事件处理:事件被handler处理
一般来说,这些处理器方法的代码是卸载可视化界面的后面。
.NET 自动处理事件并生成一些基础的调用事件处理器的代码。
事件映射:通过委托。
事件处理器参数:
两个参数: Sender: 表示哪个对象生成了事件
EventArgs: 例外的特定事件信息
通用验证方法:通用文本框验证方法。
一般事件处理器
允许把多个事件映射到同一个处理器
动态映射
处理器可以在运行时动态增加或移除映射(+=和-=)
事件处理器总结
你可以“多对一”进行事件处理:不同的事件对应到相同的处理程序。
你也可以“一对多”进行事件处理:一个事件触发可以有多个动作。
WinForms
WinForms = .NET桌面GUI
使用 WinForms Application模板建立
实现
定义在system.windows.forms 名域
forms 从S.W.F.Form类继承行为
用法(很像VB6)
相同的体系:控件,属性,事件
相同的控件组:文本框,按钮,下拉框
强调简单实施:拖拉,放,编码
改进:
完全面向对象并可以跨语言通用
有一些更强大的控件(DataGrid)
对于数据绑定有更好的支持
更好的resizing 支持(Anchor controls; AutoScroll form)
good-bye twips, hello pixels
启动Form
在VS中生成Main代码中自动实例化一个From的对象
Application.Run(new form1())
Best Practice
1.把Main 方法移出 From Class.
Main更容易找到(不要成为gui的一部分)
Main很有可能还有其他的职责,这些职责与GUI没有关系。
一般使用App当作类名
2.一般启动时的通用异常处理
通常异常处理器
最简单的处理是日志然后终止程序
3.使用try-catch来捕获异常
WinForms 编程
WinForms 程序设计是一个很大的领域:
1.使用控件
2.建立自定义控件
3.多线程
4.MWC设计模式
.......
多Form应用程序例子
输入customer id(从一个窗体调用另一个窗体)
建立,展现
验证输入
数据绑定
1.控件可以绑定数据源来获得数据
控件可以绑定整个集合collections
控件可以绑定单个对象属性
2.数据绑定在.NET中是广泛使用的
自动地reads & writes 绑定的数据
例子:
数据绑定在list上: