自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

WindowsPhone項(xiàng)目組織結(jié)構(gòu)&簡(jiǎn)單登陸例子(下)

移動(dòng)開(kāi)發(fā)
這里主要是軟件生命周期中事件實(shí)現(xiàn),已經(jīng)保存全局變量或者數(shù)據(jù)等(比如:登陸用戶賬號(hào),密碼等),同時(shí)也包括了軟件頂級(jí)容器:PhoneApplicationFrame。以上可以看出App主要是保存或者是定義全局的地方,你寫(xiě)程序的時(shí)候可以考慮需要保存全局的。

上一篇WindowsPhone項(xiàng)目組織結(jié)構(gòu)&簡(jiǎn)單登陸例子(上)中 已經(jīng)介紹了WP7項(xiàng)目組織結(jié)構(gòu),那么現(xiàn)在就讓我們來(lái)進(jìn)行實(shí)際開(kāi)發(fā)吧,本來(lái)打算寫(xiě)一個(gè)helloworld的,但是這未免太對(duì)不起觀眾了,于是就改成做個(gè)登 陸的例子,當(dāng)然這個(gè)登陸例子我們暫時(shí)不連接遠(yuǎn)程服務(wù),就在文件中寫(xiě)死吧,以后講到遠(yuǎn)程服務(wù)的時(shí)候必然會(huì)使用到的,這個(gè)登陸例子也可以作為后續(xù)開(kāi)發(fā)使用。

一:新建一個(gè)Window phone application項(xiàng)目。

       因?yàn)槲覀兪切枰龅顷?,那么必定是有用戶賬號(hào),密碼的,那么就建立一個(gè)類(lèi)UerInfo.cs   ,添加屬性

        public String userName;
        public String passworld;

二:我們的登陸是要訪問(wèn)服務(wù)端進(jìn)行驗(yàn)證的,但是呢,我們現(xiàn)在還不需要服務(wù)器端,當(dāng)然,我們可以模擬后臺(tái)服務(wù)器端登陸驗(yàn)證:

      1:我們寫(xiě)一個(gè)接口,定義用戶模塊的一些方法,這里有一個(gè)登陸方法, UsetInfo Login(string userName,string password);

      2:定義個(gè)類(lèi),實(shí)現(xiàn)該接口的方法,比如上面登陸方法:

  1. public UsetInfo Login(string userName, string password)  
  2.         { 
  3.             UsetInfo info = null
  4.             if (userName.Equals("sa") && password.Equals("123456")) 
  5.             { 
  6.                 info=new UsetInfo(); 
  7.                 info.userName="sa"
  8.                 info.passworld="123456"
  9.             } 
  10.             return info; 
  11.         } 

三:我們模擬的服務(wù)器端數(shù)據(jù)寫(xiě)好后,就開(kāi)始實(shí)現(xiàn)我們的UI了,UI比較簡(jiǎn)單,

2個(gè)TextBlock 控件(戶名,密碼顯示),

1個(gè)TextBox 用來(lái)提供輸入用戶名,然后1個(gè)密碼框:PasswordBox,用來(lái)接收用戶輸入的密碼,設(shè)置屬性passwordChar接收密碼隱藏為:*

1個(gè)CheckBox 用來(lái)提供用戶選擇是否記住密碼,注冊(cè)Checked事件

1個(gè)Button控件,用來(lái)進(jìn)行登陸提交,注冊(cè)Click事件

當(dāng)然我們可以提供一個(gè)進(jìn)度條,ProgressBar ,可以注冊(cè)ValueChanged事件,就是值改變事件,用來(lái)顯示進(jìn)度,這里我們暫時(shí)不用 。

然后拖動(dòng)控件進(jìn)行簡(jiǎn)單布局,如下:

http://images.51cto.com/files/uploadimg/20130410/1056250.jpg

四:現(xiàn)在就進(jìn)入.cs文件中處理事件,接收戶名,密碼,然后調(diào)用登陸。當(dāng)然如果用戶勾選了“記住密碼”,就需要保存戶名,密碼到本 機(jī),下次打開(kāi)軟件時(shí)顯示出來(lái),那么怎么保存呢?這里我們用IsolatedStorageSettings(獨(dú)立存貯,類(lèi)似于鍵值對(duì)形式保存數(shù)據(jù))

具體代碼如下:

  1. //我們把用戶對(duì)象保存進(jìn)去 
  2.                        IsolatedStorageSettings.ApplicationSettings["UserInfo"] = usetInfo; 
  3.                        IsolatedStorageSettings.ApplicationSettings.Save(); 

當(dāng)然開(kāi)始加載頁(yè)面時(shí)候也應(yīng)該取出保存的UserInfo,并把戶號(hào),密碼等設(shè)置在文本框中:

  1. //判斷是否有鍵 
  2. if(IsolatedStorageSettings.ApplicationSettings.Contains("UserInfo")) 
  3.     UsetInfo usetInfo = IsolatedStorageSettings.ApplicationSettings["UserInfo"as UsetInfo; 
  4.     //顯示在文本框中 
  5.     txtUserName.Text = usetInfo.userName; 
  6.     txtPassword.Password= usetInfo.passworld; 

五:很多時(shí)候我們登陸用戶的一些信息需要保存起來(lái)提供給全局使用,那么必定要涉及保存全局的變量,上一篇文章中,我們知道App.xaml.cs里面可以保存全局性的東西,那么我們就把用戶信息保存在App.xaml.cs里面吧,以便下次使用。

  1. //保存登陸用戶(全局),App.xaml.cs 
  2.         private UsetInfo usetInfo; 
  3.         public UsetInfo GetUsetInfo()  
  4.         { 
  5.           return usetInfo; 
  6.         } 
  7.  
  8.         public void SetUsetInfo(UsetInfo usetInfo)  
  9.         { 
  10.             this.usetInfo = usetInfo; 
  11.         } 

在Main.xmal.cs中保存到全局中:

  1. //保存用戶到全局變量中 
  2. App app= Application.Current as App; 
  3. if(app!=null
  4.     app.SetUsetInfo(usetInfo); 
  5.  
  6.     if (app.GetUsetInfo()!=null
  7.     MessageBox.Show("您已經(jīng)登陸成功!,您已經(jīng)保存對(duì)象到全局"); 

http://images.51cto.com/files/uploadimg/20130410/1056251.jpg

具體的還是看代碼吧,如下:

  1. public partial class App : Application 
  2.     { 
  3.         /// <summary> 
  4.         /// Provides easy access to the root frame of the Phone Application. 
  5.         /// </summary> 
  6.         /// <returns>The root frame of the Phone Application.</returns> 
  7.         public PhoneApplicationFrame RootFrame { getprivate set; } 
  8.  
  9.         //保存登陸用戶(全局) 
  10.         private UsetInfo usetInfo; 
  11.         public UsetInfo GetUsetInfo()  
  12.         { 
  13.           return usetInfo; 
  14.         } 
  15.  
  16.         public void SetUsetInfo(UsetInfo usetInfo)  
  17.         { 
  18.             this.usetInfo = usetInfo; 
  19.         } 
  20.  
  21.   bool? isChecked = false
  22.         // Constructor 
  23.         public MainPage() 
  24.         { 
  25.             InitializeComponent(); 
  26.             //注冊(cè)事件 
  27.             initEventListener(); 
  28.         } 
  29.  
  30.         private void initEventListener()  
  31.         { 
  32.             this.Loaded += new RoutedEventHandler(MainPage_Loaded); 
  33.             btnLogin.Click += new RoutedEventHandler(btnLogin_Click); 
  34.             chkRecord.Checked += new RoutedEventHandler(chkRecord_Checked); 
  35.             progressBar.ValueChanged += new RoutedPropertyChangedEventHandler<double>(progressBar_ValueChanged); 
  36.         } 
  37.  
  38.         //本頁(yè)加載時(shí)候根據(jù)獨(dú)立存貯保存的內(nèi)容,顯示在文本框里 
  39.         void MainPage_Loaded(object sender, RoutedEventArgs e) 
  40.         { 
  41.             //判斷是否有鍵 
  42.             if(IsolatedStorageSettings.ApplicationSettings.Contains("UserInfo")) 
  43.             { 
  44.                 UsetInfo usetInfo = IsolatedStorageSettings.ApplicationSettings["UserInfo"as UsetInfo; 
  45.                 //顯示在文本框中 
  46.                 txtUserName.Text = usetInfo.userName; 
  47.                 txtPassword.Password= usetInfo.passworld; 
  48.             } 
  49.               
  50.         } 
  51.  
  52.         void progressBar_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e) 
  53.         { 
  54.              
  55.         } 
  56.  
  57.         void chkRecord_Checked(object sender, RoutedEventArgs e) 
  58.         { 
  59.             if (sender!=null
  60.             { 
  61.                 CheckBox chkRecord = sender as CheckBox; 
  62.                 isChecked=chkRecord.IsChecked; 
  63.                 if (isChecked==true
  64.                 { 
  65.                     //判斷是否被選中,然后保存到文件中或是獨(dú)立存貯中,在下次啟動(dòng)時(shí)候就讀取文件或獨(dú)立存貯的內(nèi)容 
  66.                     isChecked = true
  67.                 } 
  68.             } 
  69.         } 
  70.  
  71.         void btnLogin_Click(object sender, RoutedEventArgs e) 
  72.         { 
  73.             string userName = txtUserName.Text.Trim(); 
  74.             string password = txtPassword.Password.Trim(); 
  75.  
  76.             //調(diào)用服務(wù)器端進(jìn)行數(shù)據(jù)驗(yàn)證登陸 
  77.              UsetInfo usetInfo= PhoneAppService.getInstance().getUserInfoService().Login(userName, password); 
  78.              if (usetInfo!=null
  79.             { 
  80.                 //保存用戶到全局變量中 
  81.                 App app= Application.Current as App; 
  82.                 if(app!=null
  83.                 { 
  84.                     app.SetUsetInfo(usetInfo); 
  85.  
  86.                     if (app.GetUsetInfo()!=null
  87.                         MessageBox.Show("您已經(jīng)登陸成功!,您已經(jīng)保存對(duì)象到全局"); 
  88.                        
  89.                     //根據(jù)單選框選中情況保存數(shù)據(jù)到獨(dú)立存貯中 
  90.                     if(isChecked==true
  91.                     { 
  92.                         //我們把用戶對(duì)象保存進(jìn)去 
  93. IsolatedStorageSettings.ApplicationSettings["UserInfo"] = usetInfo;                 IsolatedStorageSettings.ApplicationSettings.Save(); 
  94.                     } 
  95.                 } 
  96.             } 
  97.         } 

 

責(zé)任編輯:閆佳明 來(lái)源: oschina
相關(guān)推薦

2013-04-10 10:40:41

2009-07-16 15:14:27

WebWork用戶登陸

2009-07-24 15:46:00

ASP.NET登陸控件

2010-05-28 15:08:09

MySQL遠(yuǎn)程登陸

2009-06-17 12:59:32

Linux

2009-06-16 09:38:39

Linux

2014-09-29 09:31:35

Angular

2023-12-05 07:26:21

Golang項(xiàng)目結(jié)構(gòu)

2011-07-20 09:27:37

Scala

2010-06-07 10:44:01

MySQL遠(yuǎn)程登陸

2010-04-21 17:20:03

Unix遠(yuǎn)程

2011-03-08 13:52:25

Proftpd

2009-12-22 13:50:00

2009-11-10 17:31:38

VB.NET注冊(cè)表

2012-02-14 10:46:15

WP Marketpl雜志月刊

2009-12-15 17:28:58

戴爾互聯(lián)課堂

2010-08-18 08:21:49

Adobe AIRAndroid

2009-02-18 22:19:24

AD用戶登陸實(shí)現(xiàn)限制

2012-11-07 10:09:11

組件技術(shù)OAuth授權(quán)登陸

2018-02-24 14:00:42

TensorFlow數(shù)學(xué)計(jì)算機(jī)器學(xué)習(xí)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)