From a061384ba628a09bf4df91f50321ab22c03129aa Mon Sep 17 00:00:00 2001
From: alielie <alielie@git.com>
Date: 星期二, 18 三月 2025 20:58:36 +0800
Subject: [PATCH] Winform支持遮罩层;
---
WPFProject/App.xaml.cs | 62 ++++++++++++++++++++++---------
1 files changed, 44 insertions(+), 18 deletions(-)
diff --git a/WPFProject/App.xaml.cs b/WPFProject/App.xaml.cs
index 2a6f66f..545b7cc 100644
--- a/WPFProject/App.xaml.cs
+++ b/WPFProject/App.xaml.cs
@@ -1,11 +1,13 @@
-锘縰sing HMI.Core.Util;
+锘縰sing HMI.Core.Setting;
+using HMI.Core.Util;
using HMI.UI.Util;
using log4net;
using Panuon.WPF.UI;
using System;
using System.IO;
+using System.Reflection;
+using System.Threading;
using System.Windows;
-using System.Windows.Markup;
using WPFProject.Utils;
namespace WPFProject
@@ -26,32 +28,56 @@
{
var ex = e.ExceptionObject as Exception;
log.Error("UnhandledException.", ex);
- Dispatcher.Invoke(() =>
- {
- MsgBoxHelper.ErrorMessage(Current.MainWindow, $"鍙戠敓鏈煡寮傚父锛佺▼搴忓嵆灏嗗叧闂璡r\n{ex?.Message}",
- "閿欒", MessageBoxButton.OK,
+ MsgBoxHelper.ErrorMessage(Current.MainWindow, this.lang("App.AppUnhandledException",ex.Message),
+ this.lang("App.Error"), MessageBoxButton.OK,
MessageBoxIcon.Error, DefaultButton.YesOK, 5);
- });
}
+ private static Mutex mutex;
private void Application_Startup(object sender, StartupEventArgs e)
{
- LangUtil.Load();
- ToastHelper.Register(new MainToastHandler());
- LoadingWindow window = new LoadingWindow();
- //Login window = new Login();
- window.Show();
+ mutex = new Mutex(true, "TestPlatform_OnlyRun_CRNS");
+ if (mutex.WaitOne(0, false))
+ {
+ AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
+
+ LangUtil.Load();
+ SystemSetting.SystemSettingChanged += SystemSetting_SystemSettingChanged;
+ ToastHelper.Register(new MainToastHandler());
+ //LoadingWindow window = new LoadingWindow();
+ Login window = new Login();
+ window.Show();
+ }
+ else
+ {
+ MessageBox.Show("绋嬪簭宸茬粡鍦ㄨ繍琛岋紒", "鎻愮ず");
+ this.Shutdown();
+ }
}
-
- private void LoadLang()
+ private Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
- string path = "Lang/zh-CN/app.xaml";
- using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read))
+ // 鑾峰彇璇锋眰鍔犺浇鐨勭▼搴忛泦鍚嶇О
+ string assemblyName = new AssemblyName(args.Name).Name;
+
+ string[] dirs = new string[] { "3rds", "Libs" };
+
+ foreach (string dir in dirs)
{
- var dict = (ResourceDictionary)XamlReader.Load(fs);
- Application.Current.Resources.MergedDictionaries.Add(dict);
+ string dllPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, dir, $"{assemblyName}.dll");
+ if (File.Exists(dllPath))
+ {
+ // 濡傛灉渚濊禆 DLL 瀛樺湪锛屽垯鍔犺浇骞惰繑鍥炲畠
+ return Assembly.LoadFrom(dllPath);
+ }
}
+ // 鍚﹀垯杩斿洖 null
+ return null;
+ }
+
+ private void SystemSetting_SystemSettingChanged(object sender, SystemSetting e)
+ {
+ LangUtil.LoadLang();
}
}
}
--
Gitblit v1.9.1