版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、项目三 WPF路由事件登录和注册程序实现副教授 陈郑军本章导读:本项目的主要内容是学习主要内容是学习WPFWPF路由事件知识,特别是路由事件知识,特别是键盘事件和鼠标事件键盘事件和鼠标事件。项目以项目以“图书借阅系统的登录和注图书借阅系统的登录和注册程序实现册程序实现”为导向,二,二个任务(完成登录窗体事件处理 、完成注册窗体事件处理 )为驱动,学习有关学习有关WPFWPF的的知识,特别是路由事件的灵活应用知识,特别是路由事件的灵活应用,本项目着力使学习者对路由事件有较深入的掌握,能灵活应用。项目三 WPF路由事件登录和注册程序实现任务一任务一 完成登录窗体事件处理完成登录窗体事件处理 一、任
2、务描述:完善用户登录界面的事件处理和登录后台程序,实现根据图书管理系统用完善用户登录界面的事件处理和登录后台程序,实现根据图书管理系统用户信息表(户信息表(UserInfo)的帐号信息来验证用户登录行为。)的帐号信息来验证用户登录行为。http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/www.xunchi- http:/ http:/ http:/ http:/ htt
3、p:/ http:/ http:/ http:/ http:/ http:/ http:/ / http:/ http:/www.gz- http:/ http:/ 二、知识准备:1什么是路由事件2处理路由事件二、知识准备:1、什么是路由事件?(1)路由事件的定义路由事件是一个 CLR 事件,它由 RoutedEvent 类的实例提供支持并向 WPF 事件系统注册。 从注册中获取的 RoutedEvent 实例通常保留为某种类的 public static readonly 字段成员,该类进行了注册并因此“拥有”路由事件。(1)功能定义:路由事件是一种可以
4、针对元素树中的多个侦听器(而不是仅针对引发该事件的对象)调用处理程序的事件。(2)实现定义:路由事件是一个 CLR 事件,可以由 RoutedEvent 类的实例提供支持并由 Windows Presentation Foundation (WPF) 事件系统来处理。二、知识准备:1、什么是路由事件?二、知识准备:1、什么是路由事件?(2)为什么WPF采用路由事件?(1)原CLR事件功能不足(2)路由事件具有更为丰富的功能http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ htt
5、p:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/www.xunchi- http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ / http:/ http:/www.gz- http:/ http:/ 二、知识准备:1、什么是路由事件?(3)路由事件的使用建议如果我们使用以下任一建议方案,路由事件的功能将得到充分发挥:1.在公用根处定义公用处理程序;2.合成自己的控件;3.定义自己的自定义控件类。二、知识
6、准备:2、处理路由事件(1)添加路由事件若要在若要在 XAML 中添加事件处理程序,只需将相应的事件名称作为中添加事件处理程序,只需将相应的事件名称作为一个特性添加到某个元素中,并将特性值设置为用来实现相应委托的一个特性添加到某个元素中,并将特性值设置为用来实现相应委托的事件处理程序的名称,如下面的示例中所示。事件处理程序的名称,如下面的示例中所示。二、知识准备:2、处理路由事件(1)添加路由事件XAML中跳转到后台中跳转到后台cs处理程序(可以借助该功能创建处理程序框架)。处理程序(可以借助该功能创建处理程序框架)。二、知识准备:2、处理路由事件(1)添加路由事件private void C
7、lick_Img(object sender, MouseButtonEventArgs e) Click_Img是实现的处理程序的名称,该处理程序包含用来处理 Click 事件的代码。 Click_Img必须具备与 RoutedEventHandler 委托相同的签名,该委托是 MouseLeftButtonDown 事件的事件处理程序委托。 所有路由事件处理程序委托的第一个参数都指定要向其中添加事件处理程序的元素,第二个参数指定事件的数据。不同的事件中,第二个参数类型名称可能不同,但是都有路由事件参数的共性功能。二、知识准备:2、处理路由事件(2)已处理概念所有的路由事件都共享一个公共的事
8、件数据基类所有的路由事件都共享一个公共的事件数据基类 RoutedEventArgs。 RoutedEventArgs 定义了一个采用布尔值的定义了一个采用布尔值的 Handled 属性。属性。 Handled 属属性的目的在于,允许路由中的任何事件处理程序通过将性的目的在于,允许路由中的任何事件处理程序通过将 Handled 的值的值设置为设置为 true 来将路由事件标记为来将路由事件标记为“已处理已处理”。 在路由事件的事件数据中,如果在路由事件的事件数据中,如果 Handled 为为 true,则通常不再为,则通常不再为该特定事件实例调用负责在其他元素上侦听该路由事件的处理程序。该特定
9、事件实例调用负责在其他元素上侦听该路由事件的处理程序。 http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/www.xunchi- http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ / http:/ http:/www.gz- ht
10、tp:/ http:/ 三、任务分析:1、图书借阅系统登录事件分析和处理?登录窗体因为只输入用户名和口令,只需要处理两个按钮的单击事件。因为很简单,建议使用直接路由事件。因为要使用数据库访问,可以将数据库访问操作分三个步骤完成(三层架构):1.全系统通用的数据库访问基类AccessDB(数据访问层)。2.用户信息表的数据库访问专有类UserInfo(业务逻辑层)。3.数据库操作窗体类frmLogin(UI层)。四、任务实施:1.在在WPF配置文件配置数据库连接字符串配置文件配置数据库连接字符串首先在项目中新增首先在项目中新增App.Config文件,修改其配置为:文件,修改其配置为: 四、任务
11、实施:2.定义数据库访问类定义数据库访问类AccessDB public class AccessDB public static string GetConnStr() return ConfigurationManager.ConnectionStrings“BookMisConnStr.ConnectionString; public static SqlConnection GetConnection() SqlConnection scn = new SqlConnection(); scn.ConnectionString = GetConnStr(); return scn; 四
12、、任务实施:2.定义数据库访问类定义数据库访问类AccessDB public static DataSet GetDataSet(string SQL, string NickName) SqlConnection scn = new SqlConnection(); scn.ConnectionString = GetConnStr(); scn.Open(); SqlDataAdapter da = new SqlDataAdapter(SQL, scn); DataSet ds = new DataSet(); da.Fill(ds, NickName); scn.Close(); r
13、eturn ds; 四、任务实施:2.定义数据库访问类定义数据库访问类AccessDB public static DataTable GetDataTable(string SQL) SqlConnection scn = new SqlConnection(); scn.ConnectionString = GetConnStr(); scn.Open(); SqlDataAdapter da = new SqlDataAdapter(SQL, scn); DataSet ds = new DataSet(); da.Fill(ds, tmp); scn.Close(); return d
14、s.Tables0; http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/www.xunchi- http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ / http:/ http:/www.gz- http:/ http:/ 四、任务实
15、施:2.定义数据库访问类定义数据库访问类AccessDB public static string GetFieldValue(string SQL) SqlConnection scn = new SqlConnection(); scn.ConnectionString = GetConnStr(); scn.Open(); SqlCommand scm = scn.CreateCommand(); scm.CommandText = SQL; SqlDataReader sdr = scm.ExecuteReader(); string tmp = ;四、任务实施:2.定义数据库访问类定
16、义数据库访问类AccessDB if (sdr.Read() if (sdr.IsDBNull(0) tmp = ; else tmp = sdr.GetValue(0).ToString(); sdr.Close(); scn.Close(); return tmp.Trim(); 四、任务实施:2.定义数据库访问类定义数据库访问类AccessDB public static string ExecSQL(string SQL) SqlConnection scn = new SqlConnection(); scn.ConnectionString = GetConnStr(); scn.
17、Open(); SqlCommand scm = new SqlCommand(); scm.Connection = scn; scm.CommandText = SQL; int t = scm.ExecuteNonQuery(); scn.Close(); return t.ToString(); 四、任务实施:2.定义数据库访问类定义数据库访问类AccessDB 注 意 该 类 中 要 添 加 三 个 命 名 空 间 : S y s t e m . D a t a 、System.Data.SqlClient和System.Configuration。同时对于最后个命名空间,还要添加其
18、引用。用于解决访问App.Config中数据库连接字符串和数据库访问。四、任务实施:4.新增用户表业务逻辑层UserInfonamespace UserAdmin public class UserInfo public static Boolean IsCheckIn;/登录状态 public static string UID;/帐号 public static string LoginTime;/登录时间 public static Boolean IsUserAdmin;/是否拥有用户管理权限 public static Boolean IsReaderAdmin;/是否拥有读者管理权
19、限 public static Boolean IsBookAdmin;/是否拥有图书权限 public static Boolean IsBorrowAdmin;/是否拥有借阅权限http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/www.xunchi- http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ ht
20、tp:/ http:/ http:/ / http:/ http:/www.gz- http:/ http:/ 四、任务实施:4.新增用户表业务逻辑层UserInfopublic static bool isExistUser(string uid) string cnt = AccessDB.GetFieldValue(select count(*) from UserInfo where UserID= + uid + ); if (cnt = 1) return true; return false; 四、任务实施:4.新增用户表业务逻辑层UserI
21、nfo public static string getPassword(string uid) if (isExistUser(uid) = true) return AccessDB.GetFieldValue(select UserPWD from UserInfo where UserID= + uid + ); return ; 四、任务实施:4.新增用户表业务逻辑层UserInfo public static Boolean getUserAdmin(string uid) if (isExistUser(uid) = true) string qx= AccessDB.GetFi
22、eldValue(select UserAdmin from UserInfo where UserID= + uid + ); return Convert.ToBoolean(qx); return false; 四、任务实施:4.新增用户表业务逻辑层UserInfo public static Boolean getReaderAdmin(string uid) if (isExistUser(uid) = true) string qx = AccessDB.GetFieldValue(select ReaderAdmin from UserInfo where UserID= + u
23、id + ); return Convert.ToBoolean(qx); return false; 四、任务实施:4.新增用户表业务逻辑层UserInfopublic static Boolean getBookAdmin(string uid) if (isExistUser(uid) = true) string qx = AccessDB.GetFieldValue(select BookAdmin from UserInfo where UserID= + uid + ); return Convert.ToBoolean(qx); return false; http:/ htt
24、p:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/www.xunchi- http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ / http:/ http:/www.gz- http:/ http:/ 四、任务实施:4.新增用户表业务逻辑层UserInf
25、o public static Boolean getBorrowAdmin(string uid) if (isExistUser(uid) = true) string qx = AccessDB.GetFieldValue(select BorrowAdmin from UserInfo where UserID= + uid + ); return Convert.ToBoolean(qx); return false; 四、任务实施:4.新增用户表业务逻辑层UserInfopublic static bool newUser(string uid, string pwd, strin
26、g userAdmin,string readerAdmin,string bookAdmin,string borrowAdmin,string regTime) if (isExistUser(uid) = false) string sql = insert into userInfo(UserID,UserPWD,UserAdmin,ReaderAdmin”; sql+=“,BookAdmin,BorrowAdmin,RegisterTime) ; sql += values( + uid + , + pwd + , + userAdmin + ,+readerAdmin+,+book
27、Admin+,+borrowAdmin+,+regTime+); AccessDB.ExecSQL(sql); return true; return false; 四、任务实施:4.新增用户表业务逻辑层UserInfopublic static bool modifyUser(string uid, string pwd, string userAdmin, string readerAdmin, string bookAdmin, string borrowAdmin) if (isExistUser(uid) = true) string sql=update userInfo set
28、userPWD=+pwd+,UserAdmin=“; sql+=userAdmin+,ReaderAdmin=+readerAdmin; sql+=,BookAdmin=+bookAdmin+,BorrowAdmin=+borrowAdmin+ where UserID= + uid + ; AccessDB.ExecSQL(sql); return true; return false; 四、任务实施:4.新增用户表业务逻辑层UserInfopublic static bool deleteUser(string uid) if (isExistUser(uid) = true) AccessDB.ExecSQL(delete from UserInfo where UserID= + uid + ); return true; return false; 四、任务实施:5.注册按钮路由事件处理代码private void btLogin_Click(object sender, RoutedEventArgs e) string
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人员流动与内部调岗制度
- 成功的八项伟大心理法则
- 部编版五年级语文下册第二单元各类阅读真题(含小古文、非连续性文本等)名师解析连载
- 2024年长春客运丛业资格证考试
- 2024年新疆客运资格证考试题目下载什么软件
- 2024年银川客车考试题库
- 2024年福州客运资格从业证考试
- 2024年湖北客车驾驶员考试试题及答案
- 2024年铜陵资格证客运题库
- 英语-浙江省湖州、衢州、丽水2024年11月三地市高三教学质量检测试卷试题和答案
- 广东省深圳市2023-2024学年高一上学期生物期中试卷(含答案)
- 第七章 立体几何与空间向量综合测试卷(新高考专用)(学生版) 2025年高考数学一轮复习专练(新高考专用)
- 大学美育(同济大学版)学习通超星期末考试答案章节答案2024年
- 2024年2024年离婚协议书模板
- 中国急性缺血性卒中诊治指南(2023版)
- 福建省残疾人岗位精英职业技能竞赛(美甲师)参考试题及答案
- 航空器系统与动力装置学习通超星期末考试答案章节答案2024年
- 中考英语过去将来时趣味讲解动态课件(43张课件)
- 过敏性休克完整版本
- 08D800-8民用建筑电气设计与施工防雷与接地
- 科学的体育锻炼课件(图文)
评论
0/150
提交评论