WindowsMobile(Winform)開發中可能會遇到以下幾個問題:
1、在不同的Form中要調用對方的方法或者使用對方的資料,而不知道如何調用。例如在一個From1中,以Dialog形式彈出另外一個From2,如何在Form2中調用Form1的方法和使用Form1的資料呢?
2、對於CS開發模式,載入伺服器的資料需要一定的時間,特別是有的資料在不同的Form中都會使用到,次次都要載入,導致效率降低。
3、對於第一個Form,是不能退出的,要顯示第二個From的時候,只能把第一個Form hidden掉。但是下次如何把hidden掉的Form調出來呢?例如,假如登入的Form是第一個Form,登出的時候,如何才能把登入的Form顯示出來呢?
為此對於解決以上三個問題,提出了定義全域變數的方法。用全域變數儲存重複使用的資料,當然也包括From的儲存。其實總的來說,要解決以上問題,就是要解決如何管理資料和共用資源的問題。
以下就是在第一個Form中定義的全域靜態變數
1 #region 全域變數 放在登陸頁面統一管理 2 //說明:這個介面是其他介面的依託,如果這個介面close了,整個程式都會推出,所以切換介面的時候 3 //不能close,要hiden。其他頁面返回這個頁面的時候不可重新new一個對象,因為已經存在了,不然會重複出現,因此要定義一個全域變數,供在其他頁面返回登入頁面的時候用 4 static public 登陸介面 login; //全域程式管理 5 //護士基本資料 供全域調用 6 public static nurse.NurseService.NurseInfo nurseinfo; //全域護士資訊 7 //當前操作病人 8 public static nurse.NurseService.Patient grobalPatient; //全域病人變數,點擊病人時擷取 9 public static nurse.NurseService.ExecutiveOrder[] orders; //全域分類執行單。某病人的分類執行單10 public static nurse.NurseService.Patient[] grobalPatients; //全域病人列表11 12 #endregion
在建構函式或者From在loaded後把From的引用儲存:
1 public 登陸介面()2 {3 InitializeComponent();4 login = this; //將這個From的引用儲存,供其他視窗調用5 }
在登出的時候,要把之前hidden了的第一個視窗,只需要重新Show出來即可。
1 /// <summary> 2 /// 取消 3 /// </summary> 4 /// <param name="sender"></param> 5 /// <param name="e"></param> 6 private void button2_Click(object sender, EventArgs e) 7 { 8 登陸介面.login.Show(); //重新顯示登入視窗 9 this.Close();10 }
總的來說,用以上方法,即可以解決不同From中調用對方的方法問題又可以把經常用到的要從伺服器載入的資料儲存到靜態變數中,供多次使用,避免多次從伺服器載入,從而提高效率。