C#用Mutex实现窗体切换[C#窗体切换]

如何实现多窗口的切换?  如果不想使用  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();

这是我的个人的一个思路,最为初学者让大家见笑了,拿出来自己的思路让大家指点圈点,希望借助大家的指点寻找更好的方法,谢谢。

猜你喜欢

转载自blog.csdn.net/u013667895/article/details/78970027