如何实现多窗口的切换? 如果不想使用 hide 和show处理,如何实现?
使用一个案例举个例辅助理解:设定一个思路:
1 执行:登陆时先判断下有没有配置数据库链接并保障正常访问;
结果:有配置文件且能访问正常访问数据库返回 true;
配置文件不存在,或者配置文件中数据库链接信息失效, 返回 flase ;
2 执行:接收第一步的结果,如果第一步里的判断结果返回了 否
结果:进入到数据库配置窗体,只有配置正确才能进入第三个窗口
3 执行:如果第二步配置正确且保存完成,那么第二个数据库配置窗体关闭,进入系统登陆界面。
结果:返回要登陆的用户信息是否正确
4执行:第三步的窗体 是ShowDialog()==DialogResult.OK,那么切换到系统菜单功能界面主窗体。
这其中涉及到三个窗体:要登陆成功进入主窗体Main,前面需要过两道:1判断数据库链接 2登陆 怎么实现切换?
使用Mutex实现窗体的切换, 代码如下:
using MedicalRecord.Class; using System; using System.Threading; using System.Windows.Forms; namespace MedicalRecord { internal static class Program { [STAThread] private static void Main() { bool ret; Mutex mutex = new Mutex(true, Application.ProductName, out ret); Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); CheckConfig checkConfig = new CheckConfig(); if (ret) { //判断数据库配置的,这里重点是举例介绍用mutex实现窗口切换,所以判断就不再啰嗦 string AppSettingString = checkConfig.GetAppSettings(); bool checkresult = checkConfig.TestConntion(AppSettingString); //收到判断结果,如果需要重新配置的话 就执行if里的代码:运行SetConfig窗体 if (checkresult == false) { Application.Run(new SetConfig()); //当数据库链接配置好了,关闭了这个窗体时,也就释放一次mutex mutex.ReleaseMutex(); } try { //配置好后就进入到了登陆窗体,实例化登陆窗体 Form_login login = new Form_login(); if (login.ShowDialog() == DialogResult.OK) { //如果登陆成功了,就需要进入main主窗体 Application.Run(new Main()); } mutex.ReleaseMutex(); } catch (Exception ex) { MessageBox.Show(null, ex.ToString(), Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Warning); Application.Exit(); } } } } }然后,所有的窗体要关闭时就需要: Application.Exit();
这是我的个人的一个思路,最为初学者让大家见笑了,拿出来自己的思路让大家指点圈点,希望借助大家的指点寻找更好的方法,谢谢。