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();

這是我的個人的一個思路,最爲初學者讓大家見笑了,拿出來自己的思路讓大家指點圈點,希望藉助大家的指點尋找更好的方法,謝謝。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章