如何實現多窗口的切換? 如果不想使用 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();
這是我的個人的一個思路,最爲初學者讓大家見笑了,拿出來自己的思路讓大家指點圈點,希望藉助大家的指點尋找更好的方法,謝謝。