diff --git a/插件库/Lskj.Control/BrowserSetting/BsClient.cs b/插件库/Lskj.Control/BrowserSetting/BsClient.cs index 5753145..ca3db4e 100644 --- a/插件库/Lskj.Control/BrowserSetting/BsClient.cs +++ b/插件库/Lskj.Control/BrowserSetting/BsClient.cs @@ -78,17 +78,17 @@ namespace Lskj.Control.BrowserSetting string arg2 = message.Arguments.GetString(2); string arg3 = message.Arguments.GetString(3); string arg4 = message.Arguments.GetString(4); - PostToUiThread( - ERPInfo.Instance.MainControl, - delegate + if (ERPInfo.Instance.MainControl.InvokeRequired) + { + ERPInfo.Instance.MainControl.Invoke(new Action(() => { - BsOpenModuleHandler.OpenModule( - arg0, - arg1, - arg2, - arg3, - arg4); - }); + BsOpenModuleHandler.OpenModule(arg0, arg1, arg2, arg3, arg4); + })); + } + else + { + BrowserSetting.BsOpenModuleHandler.OpenModule(arg0, arg1, arg2, arg3, arg4); + } } else if (message.Name.Equals("OpenOnRightClick")) { @@ -96,103 +96,75 @@ namespace Lskj.Control.BrowserSetting string arg1 = message.Arguments.GetString(1); string arg2 = message.Arguments.GetString(2); string arg3 = message.Arguments.GetString(3); - PostToUiThread( - ERPInfo.Instance.MainControl, - delegate + if (ERPInfo.Instance.MainControl.InvokeRequired) + { + ERPInfo.Instance.MainControl.Invoke(new Action(() => { - BsOpenModuleHandler.OpenRightModule( - arg0, - arg1, - arg2, - arg3); - }); + BsOpenModuleHandler.OpenRightModule(arg0, arg1, arg2, arg3); + })); + } + else + { + BsOpenModuleHandler.OpenRightModule(arg0, arg1, arg2, arg3); + } } else if (message.Name.Equals("CloseWin")) { - var browserControl = frmWebBrowser; - PostToUiThread( - browserControl, - delegate + if (frmWebBrowser != null && frmWebBrowser.Parent != null && frmWebBrowser.Parent.Parent != null && frmWebBrowser.Parent.Parent is BaseForm baseForm) + { + if (baseForm.InvokeRequired) + { + baseForm.Invoke(new Action(() => + { + baseForm.DialogResult = DialogResult.OK; + baseForm.Close(); + })); + } + else { - // Parent/Parent is a WinForms control-tree read and must - // not run on CEF's UI thread. - var parent = browserControl.Parent; - var baseForm = parent == null - ? null - : parent.Parent as BaseForm; - if (baseForm == null || baseForm.IsDisposed) - return; - baseForm.DialogResult = DialogResult.OK; baseForm.Close(); - }); + } + } } else if (message.Name.Equals("SelectPro")) { string arg0 = message.Arguments.GetString(0); string arg1 = message.Arguments.GetString(1); bool isclose = arg1!=null&&!string.IsNullOrWhiteSpace(arg1) && arg1.Equals("1") ? true : false; - var browserControl = frmWebBrowser; - PostToUiThread( - browserControl, - delegate + if (frmWebBrowser != null && frmWebBrowser.Parent != null && frmWebBrowser.Parent.Parent != null && frmWebBrowser.Parent.Parent is BaseForm baseForm) + { + if (baseForm.InvokeRequired) + { + baseForm.Invoke(new Action(() => + { + BsOpenModuleHandler.AddReturnRow(arg0); + if (isclose) + { + baseForm.DialogResult = DialogResult.OK; + baseForm.Close(); + } + + })); + } + else { - var parent = browserControl.Parent; - var baseForm = parent == null - ? null - : parent.Parent as BaseForm; - if (baseForm == null || baseForm.IsDisposed) - return; - BsOpenModuleHandler.AddReturnRow(arg0); - if (isclose) + if (isclose) { baseForm.DialogResult = DialogResult.OK; baseForm.Close(); - } - }); + } + } + } + + + } return base.OnProcessMessageReceived(browser, frame, sourceProcess, message); } - private static void PostToUiThread( - System.Windows.Forms.Control control, - Action action) - { - if (control == null || action == null || control.IsDisposed || - !control.IsHandleCreated) - return; - - Action guardedAction = delegate - { - if (control.IsDisposed) - return; - - try - { - action(); - } - catch (Exception exception) - { - ReportProcessMessageFailure(exception); - } - }; - - try - { - // CEF invokes OnProcessMessageReceived on its UI thread. A - // synchronous Control.Invoke can block that thread inside a - // modal dialog while the dialog waits for CEF to create its - // browser. Always queue the operation and return to CEF first. - control.BeginInvoke(guardedAction); - } - catch (Exception exception) - { - ReportProcessMessageFailure(exception); - } - } - private static void ReportProcessMessageFailure(Exception exception) { try @@ -201,10 +173,10 @@ namespace Lskj.Control.BrowserSetting } catch { - // Never propagate logging failures into a native CEF callback. + // Logging must never rethrow across the native CEF callback. } - Action showError = delegate + Action showError = () => { try { @@ -212,14 +184,14 @@ namespace Lskj.Control.BrowserSetting } catch { + // Error reporting must never terminate the browser callback. } }; try { System.Windows.Forms.Control mainControl = ERPInfo.Instance.MainControl; - if (mainControl == null || mainControl.IsDisposed || - !mainControl.IsHandleCreated) + if (mainControl == null || mainControl.IsDisposed || !mainControl.IsHandleCreated) return; if (mainControl.InvokeRequired) @@ -229,36 +201,15 @@ namespace Lskj.Control.BrowserSetting } catch { - // The main window may close while the callback is reporting. + // The main window may close while the CEF callback is reporting. } } - public void Created(CefBrowser cefBrowser) { - if (frmWebBrowser != null && OnCreated != null) + if (OnCreated != null) { OnCreated(cefBrowser, EventArgs.Empty); } } - - public bool Closing(CefBrowser browser) - { - var control = frmWebBrowser; - return control != null && control.BrowserClosing(browser); - } - - public void Closed(CefBrowser browser) - { - var control = frmWebBrowser; - if (control != null) - { - control.BrowserClosed(browser); - if (control.cefBrowserSettings == null) - { - frmWebBrowser = null; - OnCreated = null; - } - } - } } } diff --git a/插件库/Lskj.Control/BrowserSetting/BsDownloadHandler.cs b/插件库/Lskj.Control/BrowserSetting/BsDownloadHandler.cs index f546ff0..d6bf8de 100644 --- a/插件库/Lskj.Control/BrowserSetting/BsDownloadHandler.cs +++ b/插件库/Lskj.Control/BrowserSetting/BsDownloadHandler.cs @@ -42,7 +42,7 @@ namespace Lskj.Control.BrowserSetting } if (BsClient != null && BsClient.frmWebBrowser != null && BsClient.frmWebBrowser.Parent != null && BsClient.frmWebBrowser.Parent.Name.Equals("previewFrm")) { - BsClient.frmWebBrowser.CloseBrowser(); + browser.GetHost().CloseBrowser(); } else if (BsClient != null && BsClient.frmWebBrowser != null) { @@ -196,24 +196,11 @@ namespace Lskj.Control.BrowserSetting try { if (browser == null) return null; - IntPtr browserHandle; - using (var browserHost = browser.GetHost()) - { - browserHandle = browserHost.GetWindowHandle(); - } + IntPtr browserHandle = browser.GetHost().GetWindowHandle(); if (browserHandle == IntPtr.Zero) return null; IntPtr parentHandle = GetParent(browserHandle); - System.Windows.Forms.Control control = null; - while (parentHandle != IntPtr.Zero && control == null) - { - // The CEF child now sits inside an application-owned native - // host. Walk through that host to preserve the original - // FrmWebBrowser-based module lookup. - control = System.Windows.Forms.Control.FromHandle(parentHandle); - parentHandle = GetParent(parentHandle); - } - - if (control == null) return null; + if (parentHandle == IntPtr.Zero) return null; + System.Windows.Forms.Control control = System.Windows.Forms.Control.FromHandle(parentHandle); if (control != null && control.Parent != null && control.Parent.Parent != null) { diff --git a/插件库/Lskj.Control/BrowserSetting/BsLifeSpanHandler.cs b/插件库/Lskj.Control/BrowserSetting/BsLifeSpanHandler.cs index a421d3e..1366afb 100644 --- a/插件库/Lskj.Control/BrowserSetting/BsLifeSpanHandler.cs +++ b/插件库/Lskj.Control/BrowserSetting/BsLifeSpanHandler.cs @@ -20,20 +20,9 @@ namespace Lskj.Control.BrowserSetting base.OnAfterCreated(browser); BsClient.Created(browser); } - - protected override bool DoClose(CefBrowser browser) - { - // CEF sends WM_CLOSE to the parked application-owned host after - // this callback. The host only allows that second close attempt. - return BsClient.Closing(browser); - } - protected override void OnBeforeClose(CefBrowser browser) { base.OnBeforeClose(browser); - - // Release owner references after CEF completes its async close. - BsClient.Closed(browser); } protected override bool OnBeforePopup( diff --git a/插件库/Lskj.Control/BrowserSetting/BsRequestHandler.cs b/插件库/Lskj.Control/BrowserSetting/BsRequestHandler.cs index 2922124..a00c32f 100644 --- a/插件库/Lskj.Control/BrowserSetting/BsRequestHandler.cs +++ b/插件库/Lskj.Control/BrowserSetting/BsRequestHandler.cs @@ -3,7 +3,6 @@ using System.Collections.Generic; using System.Linq; using System.Text; using Xilium.CefGlue; -using Lskj.Business; namespace Lskj.Control.BrowserSetting { @@ -47,12 +46,7 @@ namespace Lskj.Control.BrowserSetting protected override void OnRenderProcessTerminated(CefBrowser browser, CefTerminationStatus status) { - // Reloading immediately from this callback can create a new - // renderer while the old one is tearing down and cause a native - // libcef crash loop. Record the termination and let the module - // lifecycle decide whether a later reopen is appropriate. - LogUtil.WriteError("CEF 渲染进程已终止,状态=" + status, - new InvalidOperationException("CEF renderer termination status=" + status)); + browser.Reload(); } } diff --git a/插件库/Lskj.Control/BrowserSetting2/BsClient.cs b/插件库/Lskj.Control/BrowserSetting2/BsClient.cs index 61adcf7..04e139d 100644 --- a/插件库/Lskj.Control/BrowserSetting2/BsClient.cs +++ b/插件库/Lskj.Control/BrowserSetting2/BsClient.cs @@ -1,6 +1,5 @@ using Lskj.Business; using Lskj.Model; -using Lskj.Util; using System; using System.Collections.Generic; using System.Linq; @@ -55,19 +54,6 @@ namespace Lskj.Control.BrowserSetting2 return contextMenuHandler; } protected override bool OnProcessMessageReceived(CefBrowser browser, CefFrame frame, CefProcessId sourceProcess, CefProcessMessage message) - { - try - { - return OnProcessMessageReceivedCore(browser, frame, sourceProcess, message); - } - catch (Exception exception) - { - ReportProcessMessageFailure(exception); - return true; - } - } - - private bool OnProcessMessageReceivedCore(CefBrowser browser, CefFrame frame, CefProcessId sourceProcess, CefProcessMessage message) { if (message.Name.Equals("OpenModule")) { @@ -76,17 +62,17 @@ namespace Lskj.Control.BrowserSetting2 string arg2 = message.Arguments.GetString(2); string arg3 = message.Arguments.GetString(3); string arg4 = message.Arguments.GetString(4); - PostToUiThread( - ERPInfo.Instance.MainControl, - delegate + if (ERPInfo.Instance.MainControl.InvokeRequired) + { + ERPInfo.Instance.MainControl.Invoke(new Action(() => { - BrowserSetting.BsOpenModuleHandler.OpenModule( - arg0, - arg1, - arg2, - arg3, - arg4); - }); + BrowserSetting.BsOpenModuleHandler.OpenModule(arg0, arg1, arg2, arg3, arg4); + })); + } + else + { + BrowserSetting.BsOpenModuleHandler.OpenModule(arg0, arg1, arg2, arg3, arg4); + } } else if (message.Name.Equals("OpenOnRightClick")) { @@ -94,140 +80,43 @@ namespace Lskj.Control.BrowserSetting2 string arg1 = message.Arguments.GetString(1); string arg2 = message.Arguments.GetString(2); string arg3 = message.Arguments.GetString(3); - PostToUiThread( - ERPInfo.Instance.MainControl, - delegate + if (ERPInfo.Instance.MainControl.InvokeRequired) + { + ERPInfo.Instance.MainControl.Invoke(new Action(() => { - BrowserSetting.BsOpenModuleHandler.OpenRightModule( - arg0, - arg1, - arg2, - arg3); - }); + BrowserSetting.BsOpenModuleHandler.OpenRightModule(arg0, arg1, arg2, arg3); + })); + } + else + { + BrowserSetting.BsOpenModuleHandler.OpenRightModule(arg0, arg1, arg2, arg3); + } } else if (message.Name.Equals("CloseWin")) { - var browserControl = frmWebBrowser; - PostToUiThread( - browserControl, - delegate + if (frmWebBrowser != null && frmWebBrowser.Parent != null && frmWebBrowser.Parent.Parent != null && frmWebBrowser.Parent.Parent is BaseForm baseForm) + { + if (baseForm.InvokeRequired) + { + baseForm.Invoke(new Action(() => + { + baseForm.Close(); + })); + } + else { - // Resolve the owning form only after returning to the - // WinForms UI thread. - var parent = browserControl.Parent; - var baseForm = parent == null - ? null - : parent.Parent as BaseForm; - if (baseForm == null || baseForm.IsDisposed) - return; - baseForm.Close(); - }); + } + } } return base.OnProcessMessageReceived(browser, frame, sourceProcess, message); } - - private static void PostToUiThread( - System.Windows.Forms.Control control, - Action action) - { - if (control == null || action == null || control.IsDisposed || - !control.IsHandleCreated) - return; - - Action guardedAction = delegate - { - if (control.IsDisposed) - return; - - try - { - action(); - } - catch (Exception exception) - { - ReportProcessMessageFailure(exception); - } - }; - - try - { - // Never keep CEF's UI thread blocked while WinForms opens a - // modal module that may create another CEF browser. - control.BeginInvoke(guardedAction); - } - catch (Exception exception) - { - ReportProcessMessageFailure(exception); - } - } - - private static void ReportProcessMessageFailure(Exception exception) - { - try - { - LogHelper.Instance.WriteError(exception); - } - catch - { - // Never propagate logging failures into a native CEF callback. - } - - Action showError = delegate - { - try - { - MessageUtil.Show(exception); - } - catch - { - } - }; - - try - { - System.Windows.Forms.Control mainControl = ERPInfo.Instance.MainControl; - if (mainControl == null || mainControl.IsDisposed || - !mainControl.IsHandleCreated) - return; - - if (mainControl.InvokeRequired) - mainControl.BeginInvoke(showError); - else - showError(); - } - catch - { - // The main window may close while the callback is reporting. - } - } - public void Created(CefBrowser cefBrowser) { - if (frmWebBrowser != null && OnCreated != null) + if (OnCreated != null) { OnCreated(cefBrowser, EventArgs.Empty); } } - - public bool Closing(CefBrowser browser) - { - var control = frmWebBrowser; - return control != null && control.BrowserClosing(browser); - } - - public void Closed(CefBrowser browser) - { - var control = frmWebBrowser; - if (control != null) - { - control.BrowserClosed(browser); - if (control.cefBrowserSettings == null) - { - frmWebBrowser = null; - OnCreated = null; - } - } - } } } diff --git a/插件库/Lskj.Control/BrowserSetting2/BsLifeSpanHandler.cs b/插件库/Lskj.Control/BrowserSetting2/BsLifeSpanHandler.cs index e604c1f..e73cd34 100644 --- a/插件库/Lskj.Control/BrowserSetting2/BsLifeSpanHandler.cs +++ b/插件库/Lskj.Control/BrowserSetting2/BsLifeSpanHandler.cs @@ -20,20 +20,9 @@ namespace Lskj.Control.BrowserSetting2 base.OnAfterCreated(browser); BsClient.Created(browser); } - - protected override bool DoClose(CefBrowser browser) - { - // CEF sends WM_CLOSE to the parked application-owned host after - // this callback. The host only allows that second close attempt. - return BsClient.Closing(browser); - } - protected override void OnBeforeClose(CefBrowser browser) { base.OnBeforeClose(browser); - - // Release owner references after CEF completes its async close. - BsClient.Closed(browser); } protected override bool OnBeforePopup( diff --git a/插件库/Lskj.Control/BrowserSetting2/BsRequestHandler.cs b/插件库/Lskj.Control/BrowserSetting2/BsRequestHandler.cs index d96770d..59889f6 100644 --- a/插件库/Lskj.Control/BrowserSetting2/BsRequestHandler.cs +++ b/插件库/Lskj.Control/BrowserSetting2/BsRequestHandler.cs @@ -3,7 +3,6 @@ using System.Collections.Generic; using System.Linq; using System.Text; using Xilium.CefGlue; -using Lskj.Business; namespace Lskj.Control.BrowserSetting2 { @@ -47,9 +46,7 @@ namespace Lskj.Control.BrowserSetting2 protected override void OnRenderProcessTerminated(CefBrowser browser, CefTerminationStatus status) { - // Do not start a new renderer during native teardown. - LogUtil.WriteError("CEF 渲染进程已终止,状态=" + status, - new InvalidOperationException("CEF renderer termination status=" + status)); + browser.Reload(); } } diff --git a/插件库/Lskj.Control/FrmWebBrowser.Designer.cs b/插件库/Lskj.Control/FrmWebBrowser.Designer.cs index 92517a9..99c48a1 100644 --- a/插件库/Lskj.Control/FrmWebBrowser.Designer.cs +++ b/插件库/Lskj.Control/FrmWebBrowser.Designer.cs @@ -14,8 +14,6 @@ namespace Lskj.Control /// 如果应释放托管资源,为 true;否则为 false。 protected override void Dispose(bool disposing) { - if (disposing) - CloseBrowserForDispose(); if (disposing && (components != null)) { components.Dispose(); diff --git a/插件库/Lskj.Control/FrmWebBrowser.cs b/插件库/Lskj.Control/FrmWebBrowser.cs index ca669dc..be285b1 100644 --- a/插件库/Lskj.Control/FrmWebBrowser.cs +++ b/插件库/Lskj.Control/FrmWebBrowser.cs @@ -109,45 +109,6 @@ namespace Lskj.Control cefBrowserSettings.GetMainFrame().LoadUrl(webResponse.ResponseUri.AbsoluteUri); } } - - internal bool BrowserClosing(CefBrowser browser) - { - return false; - } - - internal void BrowserClosed(CefBrowser browser) - { - var currentBrowser = cefBrowserSettings; - if (currentBrowser == null || browser == null) - return; - - bool sameBrowser = ReferenceEquals(currentBrowser, browser); - if (!sameBrowser) - { - try - { - sameBrowser = currentBrowser.IsSame(browser); - } - catch (Exception) - { - } - } - - if (sameBrowser) - Interlocked.CompareExchange(ref cefBrowserSettings, null, currentBrowser); - } - - internal void CloseBrowser() - { - var browser = cefBrowserSettings; - if (browser != null) - browser.GetHost().CloseBrowser(); - } - - private void CloseBrowserForDispose() - { - } - public static string ToEnUrl(string url) { string[] urlParams = url.Split('?'); diff --git a/插件库/Lskj.Control/FrmWebBrowser2.Designer.cs b/插件库/Lskj.Control/FrmWebBrowser2.Designer.cs index 241f563..9ecc201 100644 --- a/插件库/Lskj.Control/FrmWebBrowser2.Designer.cs +++ b/插件库/Lskj.Control/FrmWebBrowser2.Designer.cs @@ -14,8 +14,6 @@ namespace Lskj.Control /// 如果应释放托管资源,为 true;否则为 false。 protected override void Dispose(bool disposing) { - if (disposing) - CloseBrowserForDispose(); if (disposing && (components != null)) { components.Dispose(); diff --git a/插件库/Lskj.Control/FrmWebBrowser2.cs b/插件库/Lskj.Control/FrmWebBrowser2.cs index a296751..923fd9c 100644 --- a/插件库/Lskj.Control/FrmWebBrowser2.cs +++ b/插件库/Lskj.Control/FrmWebBrowser2.cs @@ -126,45 +126,6 @@ namespace Lskj.Control cefBrowserSettings.GetMainFrame().LoadUrl(webResponse.ResponseUri.AbsoluteUri); } } - - internal bool BrowserClosing(CefBrowser browser) - { - return false; - } - - internal void BrowserClosed(CefBrowser browser) - { - var currentBrowser = cefBrowserSettings; - if (currentBrowser == null || browser == null) - return; - - bool sameBrowser = ReferenceEquals(currentBrowser, browser); - if (!sameBrowser) - { - try - { - sameBrowser = currentBrowser.IsSame(browser); - } - catch (Exception) - { - } - } - - if (sameBrowser) - Interlocked.CompareExchange(ref cefBrowserSettings, null, currentBrowser); - } - - internal void CloseBrowser() - { - var browser = cefBrowserSettings; - if (browser != null) - browser.GetHost().CloseBrowser(); - } - - private void CloseBrowserForDispose() - { - } - public static string ToEnUrl(string url) { string[] urlParams = url.Split('?'); diff --git a/插件库/Lskj.PubBrower/DllBaseClass.cs b/插件库/Lskj.PubBrower/DllBaseClass.cs index e8884d6..579865d 100644 --- a/插件库/Lskj.PubBrower/DllBaseClass.cs +++ b/插件库/Lskj.PubBrower/DllBaseClass.cs @@ -33,30 +33,7 @@ namespace Lskj.PubBrower this.SubForm = main; this.SubForm.Text = moduleModel.FormText; main.PubBrowerModel = moduleModel; - - // CEF must be created after the caller has established the final - // WinForms owner/parent hierarchy and the form HWND exists. - if (moduleModel.downLoadFlag == 1) - { - main.OnLoad(); - } - else - { - EventHandler shown = null; - shown = delegate - { - main.Shown -= shown; - try - { - main.OnLoad(); - } - catch (Exception ex) - { - LogUtil.WriteError("Lskj.PubBrower.dll--初始化错误-->" + obj.ToString(), ex); - } - }; - main.Shown += shown; - } + main.OnLoad(); } catch (Exception ex) { diff --git a/插件库/Lskj.PubBrower/FrmMain.cs b/插件库/Lskj.PubBrower/FrmMain.cs index 79a0b8b..bec8a74 100644 --- a/插件库/Lskj.PubBrower/FrmMain.cs +++ b/插件库/Lskj.PubBrower/FrmMain.cs @@ -100,8 +100,8 @@ namespace Lskj.PubBrower previewFrm previewFrm = new previewFrm(); previewFrm.moduleWebView.PubBrowerModel = this.PubBrowerModel; previewFrm.Dock = DockStyle.Fill; - this.Controls.Add(previewFrm); previewFrm.OnLoad(url, RightKeyFlag); + this.Controls.Add(previewFrm); } } catch (Exception ex) diff --git a/插件库/Lskj.PubBrower/previewFrm.cs b/插件库/Lskj.PubBrower/previewFrm.cs index 822e2d6..af0b313 100644 --- a/插件库/Lskj.PubBrower/previewFrm.cs +++ b/插件库/Lskj.PubBrower/previewFrm.cs @@ -16,6 +16,7 @@ namespace Lskj.PubBrower public previewFrm() { InitializeComponent(); + this.SizeChanged += OnSizeChanged; } /// /// 说明:窗口加载 @@ -47,5 +48,18 @@ namespace Lskj.PubBrower MessageUtil.Show(Message, ex.Message); } } + /// + /// 窗体大小改变时 + /// + /// + /// + private void OnSizeChanged(object sender, EventArgs e) + { + if (this.moduleWebView.cefBrowserSettings != null) + { + var handle = this.moduleWebView.cefBrowserSettings.GetHost().GetWindowHandle(); + this.moduleWebView.ResizeWindow(handle, this.Width, this.Height); + } + } } } diff --git a/插件库/Lskj.PubBrower2/DllBaseClass.cs b/插件库/Lskj.PubBrower2/DllBaseClass.cs index ea6b865..54f5caa 100644 --- a/插件库/Lskj.PubBrower2/DllBaseClass.cs +++ b/插件库/Lskj.PubBrower2/DllBaseClass.cs @@ -33,30 +33,7 @@ namespace Lskj.PubBrower2 this.SubForm = main; this.SubForm.Text = moduleModel.FormText; main.PubBrowerModel = moduleModel; - - // CEF must be created after the caller has established the final - // WinForms owner/parent hierarchy and the form HWND exists. - if (moduleModel.downLoadFlag == 1) - { - main.OnLoad(); - } - else - { - EventHandler shown = null; - shown = delegate - { - main.Shown -= shown; - try - { - main.OnLoad(); - } - catch (Exception ex) - { - LogUtil.WriteError("Lskj.PubBrower2.dll--初始化错误-->" + obj.ToString(), ex); - } - }; - main.Shown += shown; - } + main.OnLoad(); } catch (Exception ex) { diff --git a/插件库/Lskj.PubBrower2/FrmMain.cs b/插件库/Lskj.PubBrower2/FrmMain.cs index 888ec25..53e665c 100644 --- a/插件库/Lskj.PubBrower2/FrmMain.cs +++ b/插件库/Lskj.PubBrower2/FrmMain.cs @@ -95,8 +95,8 @@ namespace Lskj.PubBrower2 previewFrm previewFrm = new previewFrm(); previewFrm.moduleWebView.PubBrowerModel = this.PubBrowerModel; previewFrm.Dock = DockStyle.Fill; - this.Controls.Add(previewFrm); previewFrm.OnLoad(url, RightKeyFlag); + this.Controls.Add(previewFrm); } } diff --git a/插件库/Lskj.PubBrower2/previewFrm.cs b/插件库/Lskj.PubBrower2/previewFrm.cs index dd27cd5..ffd2a19 100644 --- a/插件库/Lskj.PubBrower2/previewFrm.cs +++ b/插件库/Lskj.PubBrower2/previewFrm.cs @@ -16,6 +16,7 @@ namespace Lskj.PubBrower2 public previewFrm() { InitializeComponent(); + this.SizeChanged += OnSizeChanged; } /// /// 说明:窗口加载 @@ -48,5 +49,18 @@ namespace Lskj.PubBrower2 } } + /// + /// 窗体大小改变时 + /// + /// + /// + private void OnSizeChanged(object sender, EventArgs e) + { + if (this.moduleWebView.cefBrowserSettings != null) + { + var handle = this.moduleWebView.cefBrowserSettings.GetHost().GetWindowHandle(); + this.moduleWebView.ResizeWindow(handle, this.Width, this.Height); + } + } } }