C# Winform下一个热插拔的MIS/MRP/ERP框架11(启航)

  初学时,有了想法却完全不知道该从何下指,此序列将抛砖引玉,与大家共同学习进步。

  一个程序的初始,必然是启动。

  我的要求:

  1、应用程序保持单例;

  2、从配置文件加载一些基础数据进行初始化;

  3、显示软件的LOGO页面;

  4、判断应用程序是否有更新;

  4、进入用户登录界面;

  5、用户成功登录后显示主界面。

  

C# Winform下一个热插拔的MIS/MRP/ERP框架11(启航)

  如上图,基本达成目标,这个项目也是很简单的结构:

C# Winform下一个热插拔的MIS/MRP/ERP框架11(启航)

看窗体名称就知道各自的用途了。主要的Program.cs代码如下:

C# Winform下一个热插拔的MIS/MRP/ERP框架11(启航)

C# Winform下一个热插拔的MIS/MRP/ERP框架11(启航)

static class Program { public static bool 切换用户 = false; /// <summary> /// 主体框架应用程序的主入口点。 /// </summary> [STAThread] static void Main() { string 实例标识 = Assembly.GetExecutingAssembly().GetName().Name + "_SingtonB20"; Mutex mutex = new Mutex(true, 实例标识, out bool 单实例); if (!单实例) { 唤醒进程(实例标识); return; } Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.DoEvents(); //初始化全局DS if (GlbInfo.DSGlb == null) GlbInfo.DSGlb = new System.Data.DataSet(); else { GlbInfo.DSGlb.Clear(); GlbInfo.DSGlb.Tables.Clear(); } //加载全局多语言资源 try { AppInit.CreateDT_MulLang(AppInfo.GetFile(AppInfo.AppFile.MulMessage), "Message_Core"); AppInit.CreateDT_MulLang(AppInfo.GetFile(AppInfo.AppFile.MulSurface), "Surface_Core"); } catch (Exception ex) { MessageBox.Show(ex.Message); Environment.Exit(0); } //展示闪屏窗体 Fm20Splash 闪屏窗 = new Fm20Splash(); 闪屏窗.ShowDialog(); //系统检测正常则显示登录界面,否则退出应用 if (闪屏窗.DialogResult == DialogResult.OK) { 显示登录: 切换用户 = false; Fm20Login fmLogin = new Fm20Login(); fmLogin.ShowDialog(); if (fmLogin.DialogResult == DialogResult.OK) { Application.Run(new Fm20Main()); } else { Application.Exit(); } //当关闭主程序的时候会执行这个代码,在关闭主程序的时候需要给IsLogin 设置成true //重新回到登录窗口. if (切换用户) { goto 显示登录; } } else { Application.Exit(); } } public static void 唤醒进程(string 进程名称) { try { Process proc = Process.GetCurrentProcess(); string assemblyName = Assembly.GetExecutingAssembly().GetName().Name + 进程名称; foreach (Process 进程 in Process.GetProcessesByName(进程名称)) { if (proc.Id != 进程.Id) { IntPtr hWnd = 进程.MainWindowHandle; if (WinAPI.IsIconic(hWnd)) { WinAPI.ShowWindowAsync(hWnd, WinAPIConst.SW_RESTORE); } WinAPI.SetForegroundWindow(hWnd); return; } } } catch { } } }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpzpwd.html