ソースを参照

xls:修改网页窗体

xulisong 6 年 前
コミット
719d240a3f

+ 5 - 0
.gitignore

@@ -0,0 +1,5 @@
+################################################################################
+# 此 .gitignore 文件已由 Microsoft(R) Visual Studio 自动创建。
+################################################################################
+
+*.ide-shm

+ 1 - 0
MBI/CEFSharpWPF/CEFSharpWPF.csproj

@@ -127,6 +127,7 @@
     <Compile Include="WinBrowser.xaml.cs">
       <DependentUpon>WinBrowser.xaml</DependentUpon>
     </Compile>
+    <Compile Include="WindowExtension.cs" />
     <EmbeddedResource Include="Properties\Resources.resx">
       <Generator>ResXFileCodeGenerator</Generator>
       <LastGenOutput>Resources.Designer.cs</LastGenOutput>

+ 13 - 3
MBI/CEFSharpWPF/WinBrowser.xaml.cs

@@ -1,6 +1,10 @@
-using System.Windows;
+using System;
+using System.Windows;
+using System.Windows.Input;
+using System.Windows.Interop;
 using CefSharp;
 using CefSharp.Wpf;
+using CEFSharpWPF;
 
 namespace CEFSharpWpf
 {
@@ -14,8 +18,9 @@ namespace CEFSharpWpf
         {
             get
             {
-                if (instance == null)
+                if (instance == null||instance.IsDisposed())
                 {
+                   //OneTimeLoad.Init();
                     SetBrowserEnvironment.SetEnvironment();
                     instance = new WinBrowser();
                 }
@@ -29,6 +34,10 @@ namespace CEFSharpWpf
             this.Closing += WinBrowser_Closing;
             browser.DownloadHandler = new DownloadHandler();
             browser.LifeSpanHandler = new OpenPageSelf();
+            this.CommandBindings.Add(new CommandBinding(ApplicationCommands.Copy, (s, e) =>
+            {
+                Clipboard.SetDataObject(URL??string.Empty, false);
+            }));
         }
 
         private void WinBrowser_Closing(object sender, System.ComponentModel.CancelEventArgs e)
@@ -76,6 +85,7 @@ namespace CEFSharpWpf
             {
                 base.Show();
             }
+            this.Activate();                 
             ReloadUrl(url);
         }
 
@@ -122,7 +132,7 @@ namespace CEFSharpWpf
     {
         public bool DoClose(IWebBrowser browserControl, IBrowser browser)
         {
-            return false;
+            return true;
         }
 
         public void OnAfterCreated(IWebBrowser browserControl, IBrowser browser)

+ 37 - 0
MBI/CEFSharpWPF/WindowExtension.cs

@@ -0,0 +1,37 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+
+namespace CEFSharpWPF
+{
+    public static class WindowExtension
+    {
+        private static PropertyInfo m_IsDisposedPropertyInfo;
+        /// <summary>
+        /// 判断窗体是否释放
+        /// </summary>
+        /// <param name="window"></param>
+        /// <returns></returns>
+        public static bool IsDisposed(this System.Windows.Window window)
+        {
+            if (window == null)
+                return true;
+            if (m_IsDisposedPropertyInfo == null)
+            {
+                var type = typeof(System.Windows.Window);
+                m_IsDisposedPropertyInfo=type.GetProperty("IsDisposed", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
+            }
+
+            if (m_IsDisposedPropertyInfo != null)
+            {
+                return  (bool)m_IsDisposedPropertyInfo.GetValue(window);
+            }
+            return true;
+        }
+
+    }
+}