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中调用对方的方法问题又可以把经常用到的要从服务器加载的数据保存到静态变量中,供多次使用,避免多次从服务器加载,从而提高效率。