89 lines
2.8 KiB
C#
89 lines
2.8 KiB
C#
|
|
using Microsoft.Web.WebView2.Core;
|
|
using Microsoft.Web.WebView2.WinForms;
|
|
using System;
|
|
using System.Windows.Forms;
|
|
|
|
namespace AIProofread.Controls
|
|
{
|
|
public partial class ProofreadMainControl : UserControl
|
|
{
|
|
public ProofreadMainControl()
|
|
{
|
|
InitializeComponent();
|
|
Bridge.InitWebEnvAsync("main", web);
|
|
//this.minWidth = 420 * LabelWidth() / 42;
|
|
//this.MinimumSize = new System.Drawing.Size(this.minWidth, 0);
|
|
}
|
|
private bool isShowingErrorPage = false;
|
|
public void WebView2NavigationCompleted(object sender, CoreWebView2NavigationCompletedEventArgs e)
|
|
{
|
|
if (isShowingErrorPage)
|
|
{
|
|
return;
|
|
}
|
|
if (e.IsSuccess)
|
|
{
|
|
isShowingErrorPage = false;
|
|
return;
|
|
}
|
|
|
|
isShowingErrorPage = true;
|
|
string errorPageHtml = @"
|
|
<html>
|
|
<head>
|
|
<title>加载失败</title>
|
|
<style>
|
|
body { font-family: sans-serif; text-align: center; padding-top: 50px; user-select: none; }
|
|
h1 { color: #d00; }
|
|
</style>
|
|
</head>
|
|
<body oncontextmenu='return false;'>
|
|
<h1>页面加载失败</h1>
|
|
<p>请检查您的网络连接或稍后再试。</p>
|
|
<a href="+ "\"javascript:window.chrome.webview.postMessage('reload');\"" + @">重新加载</a>
|
|
</body>
|
|
</html>";
|
|
(sender as WebView2).CoreWebView2.NavigateToString(errorPageHtml);
|
|
|
|
}
|
|
|
|
|
|
private void ProofreadMainControl_Load(object sender, EventArgs e)
|
|
{
|
|
this.web.NavigationCompleted += WebView2NavigationCompleted;
|
|
this.web.WebMessageReceived += (s, ex) =>
|
|
{
|
|
if (ex.TryGetWebMessageAsString() == "reload")
|
|
{
|
|
isShowingErrorPage = false;
|
|
web.Source = new Uri(Config.WebPath("correct"));
|
|
}
|
|
};
|
|
this.web.Source = new Uri(Config.WebPath("correct" ));
|
|
//this.SizeChanged += ProofreadMainControl_SizeChanged;
|
|
}
|
|
|
|
private void ProofreadMainControl_SizeChanged(object sender, EventArgs e)
|
|
{
|
|
//if(this.minWidth > 0 && this.Width < this.minWidth)
|
|
//{
|
|
// SendKeys.Send("{ESC}");
|
|
// this.Width = this.minWidth;
|
|
//}
|
|
}
|
|
public int LabelWidth()
|
|
{
|
|
return label1.Width;
|
|
}
|
|
public void ResetWeb()
|
|
{
|
|
if (!this.web.IsDisposed)
|
|
{
|
|
this.web.Stop();
|
|
this.web.Dispose();
|
|
}
|
|
}
|
|
}
|
|
}
|