




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
本章導(dǎo)讀:本項(xiàng)目的主要內(nèi)容是學(xué)習(xí)WPF路由事件知識,特別是鍵盤事件和鼠標(biāo)事件。項(xiàng)目以“圖書借閱系統(tǒng)的登錄和注冊程序?qū)崿F(xiàn)”為導(dǎo)向,二個(gè)任務(wù)(完成登錄窗體事件處理、完成注冊窗體事件處理
)為驅(qū)動(dòng),學(xué)習(xí)有關(guān)WPF的知識,特別是路由事件的靈活應(yīng)用,本項(xiàng)目著力使學(xué)習(xí)者對路由事件有較深入的掌握,能靈活應(yīng)用。項(xiàng)目三WPF路由事件—登錄和注冊程序?qū)崿F(xiàn)
——任務(wù)一完成登錄窗體事件處理
一、任務(wù)描述:完善用戶登錄界面的事件處理和登錄后臺程序,實(shí)現(xiàn)根據(jù)圖書管理系統(tǒng)用戶信息表(UserInfo)的帳號信息來驗(yàn)證用戶登錄行為。二、知識準(zhǔn)備:1什么是路由事件2處理路由事件二、知識準(zhǔn)備:1、什么是路由事件?(1)路由事件的定義路由事件是一個(gè)CLR事件,它由RoutedEvent類的實(shí)例提供支持并向WPF事件系統(tǒng)注冊。從注冊中獲取的RoutedEvent實(shí)例通常保留為某種類的publicstaticreadonly字段成員,該類進(jìn)行了注冊并因此“擁有”路由事件。(1)功能定義:路由事件是一種可以針對元素樹中的多個(gè)偵聽器(而不是僅針對引發(fā)該事件的對象)調(diào)用處理程序的事件。(2)實(shí)現(xiàn)定義:路由事件是一個(gè)CLR事件,可以由RoutedEvent類的實(shí)例提供支持并由WindowsPresentationFoundation(WPF)事件系統(tǒng)來處理。二、知識準(zhǔn)備:1、什么是路由事件?二、知識準(zhǔn)備:1、什么是路由事件?(2)為什么WPF采用路由事件?(1)原CLR事件功能不足(2)路由事件具有更為豐富的功能二、知識準(zhǔn)備:1、什么是路由事件?(3)路由事件的使用建議如果我們使用以下任一建議方案,路由事件的功能將得到充分發(fā)揮:1.在公用根處定義公用處理程序;2.合成自己的控件;3.定義自己的自定義控件類。二、知識準(zhǔn)備:2、處理路由事件(1)添加路由事件若要在XAML中添加事件處理程序,只需將相應(yīng)的事件名稱作為一個(gè)特性添加到某個(gè)元素中,并將特性值設(shè)置為用來實(shí)現(xiàn)相應(yīng)委托的事件處理程序的名稱,如下面的示例中所示。二、知識準(zhǔn)備:2、處理路由事件(1)添加路由事件XAML中跳轉(zhuǎn)到后臺cs處理程序(可以借助該功能創(chuàng)建處理程序框架)。二、知識準(zhǔn)備:2、處理路由事件(1)添加路由事件privatevoidClick_Img(objectsender,MouseButtonEventArgse){}
Click_Img是實(shí)現(xiàn)的處理程序的名稱,該處理程序包含用來處理Click事件的代碼。Click_Img必須具備與RoutedEventHandler委托相同的簽名,該委托是MouseLeftButtonDown事件的事件處理程序委托。所有路由事件處理程序委托的第一個(gè)參數(shù)都指定要向其中添加事件處理程序的元素,第二個(gè)參數(shù)指定事件的數(shù)據(jù)。不同的事件中,第二個(gè)參數(shù)類型名稱可能不同,但是都有路由事件參數(shù)的共性功能。二、知識準(zhǔn)備:2、處理路由事件(2)已處理概念所有的路由事件都共享一個(gè)公共的事件數(shù)據(jù)基類RoutedEventArgs。RoutedEventArgs定義了一個(gè)采用布爾值的Handled屬性。Handled屬性的目的在于,允許路由中的任何事件處理程序通過將Handled的值設(shè)置為true來將路由事件標(biāo)記為“已處理”。
在路由事件的事件數(shù)據(jù)中,如果Handled為true,則通常不再為該特定事件實(shí)例調(diào)用負(fù)責(zé)在其他元素上偵聽該路由事件的處理程序。三、任務(wù)分析:1、圖書借閱系統(tǒng)登錄事件分析和處理?登錄窗體因?yàn)橹惠斎胗脩裘涂诹睿恍枰幚韮蓚€(gè)按鈕的單擊事件。因?yàn)楹芎唵?,建議使用直接路由事件。因?yàn)橐褂脭?shù)據(jù)庫訪問,可以將數(shù)據(jù)庫訪問操作分三個(gè)步驟完成(三層架構(gòu)):1.全系統(tǒng)通用的數(shù)據(jù)庫訪問基類AccessDB(數(shù)據(jù)訪問層)。2.用戶信息表的數(shù)據(jù)庫訪問專有類UserInfo(業(yè)務(wù)邏輯層)。3.數(shù)據(jù)庫操作窗體類frmLogin(UI層)。四、任務(wù)實(shí)施:1.在WPF配置文件配置數(shù)據(jù)庫連接字符串首先在項(xiàng)目中新增App.Config文件,修改其配置為:<?xmlversion="1.0"encoding="utf-8"?><configuration><startup><supportedRuntimeversion="v4.0"sku=".NETFramework,Version=v4.5"/></startup><connectionStrings><addname=“BookMisConnStr"connectionString="DataSource=LINGDONGLAI-PC\SQLEXPRESS;InitialCatalog=BookDB;IntegratedSecurity=True"providerName="System.Data.SqlClient"/></connectionStrings></configuration>四、任務(wù)實(shí)施:2.定義數(shù)據(jù)庫訪問類AccessDB
publicclassAccessDB{publicstaticstringGetConnStr(){returnConfigurationManager.ConnectionStrings[“BookMisConnStr"].ConnectionString;}publicstaticSqlConnectionGetConnection(){SqlConnectionscn=newSqlConnection();scn.ConnectionString=GetConnStr();returnscn;}四、任務(wù)實(shí)施:2.定義數(shù)據(jù)庫訪問類AccessDB
publicstaticDataSetGetDataSet(stringSQL,stringNickName){SqlConnectionscn=newSqlConnection();scn.ConnectionString=GetConnStr();scn.Open();SqlDataAdapterda=newSqlDataAdapter(SQL,scn);DataSetds=newDataSet();da.Fill(ds,NickName);scn.Close();returnds;}
四、任務(wù)實(shí)施:2.定義數(shù)據(jù)庫訪問類AccessDB
publicstaticDataTableGetDataTable(stringSQL){SqlConnectionscn=newSqlConnection();scn.ConnectionString=GetConnStr();scn.Open();SqlDataAdapterda=newSqlDataAdapter(SQL,scn);DataSetds=newDataSet();da.Fill(ds,"tmp");scn.Close();returnds.Tables[0];}
四、任務(wù)實(shí)施:2.定義數(shù)據(jù)庫訪問類AccessDB
publicstaticstringGetFieldValue(stringSQL){SqlConnectionscn=newSqlConnection();scn.ConnectionString=GetConnStr();scn.Open();SqlCommandscm=scn.CreateCommand();scm.CommandText=SQL;SqlDataReadersdr=scm.ExecuteReader();stringtmp="";四、任務(wù)實(shí)施:2.定義數(shù)據(jù)庫訪問類AccessDB
if(sdr.Read()){if(sdr.IsDBNull(0))tmp="";elsetmp=sdr.GetValue(0).ToString();}sdr.Close();scn.Close();returntmp.Trim();}
四、任務(wù)實(shí)施:2.定義數(shù)據(jù)庫訪問類AccessDB
publicstaticstringExecSQL(stringSQL){SqlConnectionscn=newSqlConnection();scn.ConnectionString=GetConnStr();scn.Open();SqlCommandscm=newSqlCommand();scm.Connection=scn;scm.CommandText=SQL;intt=scm.ExecuteNonQuery();scn.Close();returnt.ToString();}四、任務(wù)實(shí)施:2.定義數(shù)據(jù)庫訪問類AccessDB
注意該類中要添加三個(gè)命名空間:System.Data、System.Data.SqlClient和System.Configuration。同時(shí)對于最后個(gè)命名空間,還要添加其引用。用于解決訪問App.Config中數(shù)據(jù)庫連接字符串和數(shù)據(jù)庫訪問。四、任務(wù)實(shí)施:4.新增用戶表業(yè)務(wù)邏輯層UserInfonamespaceUserAdmin{publicclassUserInfo{publicstaticBooleanIsCheckIn;//登錄狀態(tài)
publicstaticstringUID;//帳號
publicstaticstringLoginTime;//登錄時(shí)間
publicstaticBooleanIsUserAdmin;//是否擁有用戶管理權(quán)限
publicstaticBooleanIsReaderAdmin;//是否擁有讀者管理權(quán)限
publicstaticBooleanIsBookAdmin;//是否擁有圖書權(quán)限
publicstaticBooleanIsBorrowAdmin;//是否擁有借閱權(quán)限四、任務(wù)實(shí)施:4.新增用戶表業(yè)務(wù)邏輯層UserInfopublicstaticboolisExistUser(stringuid){stringcnt=AccessDB.GetFieldValue("selectcount(*)fromUserInfowhere[UserID]='"+uid+"'");if(cnt=="1"){returntrue;}returnfalse;}四、任務(wù)實(shí)施:4.新增用戶表業(yè)務(wù)邏輯層UserInfopublicstaticstringgetPassword(stringuid){if(isExistUser(uid)==true){returnAccessDB.GetFieldValue("select[UserPWD]fromUserInfowhere[UserID]='"+uid+"'");}return"";}四、任務(wù)實(shí)施:4.新增用戶表業(yè)務(wù)邏輯層UserInfopublicstaticBooleangetUserAdmin(stringuid){if(isExistUser(uid)==true){stringqx=AccessDB.GetFieldValue("selectUserAdminfromUserInfowhere[UserID]='"+uid+"'");returnConvert.ToBoolean(qx);}returnfalse;}四、任務(wù)實(shí)施:4.新增用戶表業(yè)務(wù)邏輯層UserInfopublicstaticBooleangetReaderAdmin(stringuid){if(isExistUser(uid)==true){stringqx=AccessDB.GetFieldValue("selectReaderAdminfromUserInfowhere[UserID]='"+uid+"'");returnConvert.ToBoolean(qx);}returnfalse;}
四、任務(wù)實(shí)施:4.新增用戶表業(yè)務(wù)邏輯層UserInfopublicstaticBooleangetBookAdmin(stringuid){if(isExistUser(uid)==true){stringqx=AccessDB.GetFieldValue("selectBookAdminfromUserInfowhere[UserID]='"+uid+"'");returnConvert.ToBoolean(qx);}returnfalse;}四、任務(wù)實(shí)施:4.新增用戶表業(yè)務(wù)邏輯層UserInfopublicstaticBooleangetBorrowAdmin(stringuid){if(isExistUser(uid)==true){stringqx=AccessDB.GetFieldValue("selectBorrowAdminfromUserInfowhere[UserID]='"+uid+"'");returnConvert.ToBoolean(qx);}returnfalse;}四、任務(wù)實(shí)施:4.新增用戶表業(yè)務(wù)邏輯層UserInfopublicstaticboolnewUser(stringuid,stringpwd,stringuserAdmin,stringreaderAdmin,stringbookAdmin,stringborrowAdmin,stringregTime){if(isExistUser(uid)==false){stringsql="insertintouserInfo([UserID],[UserPWD],UserAdmin,ReaderAdmin”;sql+=“,BookAdmin,BorrowAdmin,RegisterTime)";sql+="values('"+uid+"','"+pwd+"','"+userAdmin+"',"+readerAdmin+"','"+bookAdmin+"','"+borrowAdmin+"','"+regTime+"')";AccessDB.ExecSQL(sql);returntrue;}returnfalse;}四、任務(wù)實(shí)施:4.新增用戶表業(yè)務(wù)邏輯層UserInfopublicstaticboolmodifyUser(stringuid,stringpwd,stringuserAdmin,stringreaderAdmin,stringbookAdmin,stringborrowAdmin){if(isExistUser(uid)==true){stringsql="updateuserInfoset[userPWD]='"+pwd+"',UserAdmin='“;sql+=userAdmin+"',ReaderAdmin='"+readerAdmin;sql+="',BookAdmin='"+bookAdmin+"',BorrowAdmin='"+borrowAdmin+"'where[UserID]='"+uid+"'";AccessDB.ExecSQL(sql);returntrue;}returnfalse;}四、任務(wù)實(shí)施:4.新增用戶表業(yè)務(wù)邏輯層UserInfopublicstaticbooldeleteUser(stringuid){if(isExistUser(uid)==true){AccessDB.ExecSQL("deletefromUserInfowhere[UserID]='"+uid+"'");returntrue;}returnfalse;}四、任務(wù)實(shí)施:5.注冊按鈕路由事件處理代碼privatevoidbtLogin_Click(objectsender,RoutedEventArgse){stringuid=txtUID.Text;stringpwd=tx
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)庫運(yùn)行環(huán)境配置試題及答案
- 志在必得的信息系統(tǒng)項(xiàng)目管理師試題及答案
- 公路工程執(zhí)照考試先修試題及答案
- 計(jì)算機(jī)軟件測試的敏捷方法應(yīng)用試題及答案
- 重視實(shí)踐的計(jì)算機(jī)三級數(shù)據(jù)庫考試試題及答案
- 基于數(shù)字化的現(xiàn)代農(nóng)業(yè)生產(chǎn)方式探討
- 桌球AI應(yīng)用企業(yè)制定與實(shí)施新質(zhì)生產(chǎn)力項(xiàng)目商業(yè)計(jì)劃書
- 制糖工程設(shè)計(jì)在線平臺行業(yè)深度調(diào)研及發(fā)展項(xiàng)目商業(yè)計(jì)劃書
- 物聯(lián)網(wǎng)智能家居安全系統(tǒng)行業(yè)深度調(diào)研及發(fā)展項(xiàng)目商業(yè)計(jì)劃書
- 物流與倉儲管理行業(yè)跨境出海項(xiàng)目商業(yè)計(jì)劃書
- 標(biāo)準(zhǔn)物質(zhì)管理與應(yīng)用
- Office辦公軟件培訓(xùn)教程課件
- 【圖文】做個(gè)受歡迎的人
- 逐月兇星總局
- 退伍軍人服役證明
- 地質(zhì)災(zāi)害治理工程施工記錄用表(最新整理
- 國家開放大學(xué)《管理英語1》邊學(xué)邊練參考答案
- 貴州省教育科學(xué)研究優(yōu)秀成果評選獎(jiǎng)勵(lì)辦法
- FRM真題及答案
- 十二宮卦數(shù)注解
- 平行檢驗(yàn)計(jì)劃
評論
0/150
提交評論