我創建了一個簡單的 Windows 應用程式,它使用 webview2 在 winform 中顯示網站。單擊網站上的提交按鈕后,我需要關閉此 Windows 應用程式。

可能嗎?我是 Windows 開發的新手。
uj5u.com熱心網友回復:
解決方案實際上取決于內容和頁面的作業方式。在大多數情況下,您不應該在單擊提交按鈕后立即關閉應用程式,您需要等待收到提交的回應,如果提交成功,則可以關閉視窗。
這里我分享兩個例子:
- 處理提交事件并從 WebView2 呼叫 C# 方法
- 根據 URL 檢測提交的調查表是否成功
請記住,這兩個示例都是為了學習目的,讓您了解如何在 C# 中處理 js 事件。您需要調整它們以使它們適用于您的特定案例。
示例 1 - 處理提交事件并從 WebView2 呼叫 C# 方法
在以下示例中,您可以學習:
- 如何處理
submit表單的事件 - 如何從 JavaScript 代碼呼叫 C# 方法并將 js 物件傳遞給 .NET
這是代碼:
WebView2Host host;
private async void TestForm_Load(object sender, EventArgs e)
{
await webView21.EnsureCoreWebView2Async();
host = new WebView2Host(this);
webView21.NavigateToString(
"<html>"
"<head><title>Test from</title></head>"
"<body>"
"<form id='form1' action='/' method='post'>"
"<input type='text' name='someProperty' value ='something'/>"
"<input type='submit' value='Click me'/>"
"</form>"
"</body>");
webView21.CoreWebView2.AddHostObjectToScript("host", host);
webView21.CoreWebView2.DOMContentLoaded = CoreWebView2_DOMContentLoaded;
}
private async void CoreWebView2_DOMContentLoaded(object sender,
CoreWebView2DOMContentLoadedEventArgs e)
{
await webView21.ExecuteScriptAsync(
"var form = document.getElementById('form1');"
"form.addEventListener('submit', function(e){"
"var data = JSON.stringify(Object.fromEntries(new FormData(form)));"
"window.chrome.webview.hostObjects.sync.host.OnSubmit(data);"
"});");
}
public class WebView2Host
{
TestForm hostForm;
public WebView2Host(TestForm hostForm)
{
this.hostForm = hostForm;
}
public void OnSubmit(string data)
{
//data is in json format
MessageBox.Show($"data: {data}", "C# OnSubmit!");
//You can close form like this: hostForm.Close();
}
}
示例 2 - 根據 URL 檢測提交的調查表是否成功
您可以依賴任何導航事件并檢查頁面的 URL,以查看提交是否成功。在這個例子中,我展示了如何使用谷歌調查表來做到這一點:
private async void TestForm_Load(object sender, EventArgs e)
{
await webView21.EnsureCoreWebView2Async();
webView21.Source = new Uri("https://forms.gle/pspLBJFZW5z8J1K37");
webView21.CoreWebView2.SourceChanged = CoreWebView2_SourceChanged;
}
private void CoreWebView2_SourceChanged(object? sender,
CoreWebView2SourceChangedEventArgs e)
{
if (webView21.Source.ToString().EndsWith("/formResponse"))
{
MessageBox.Show("Submitted successfully.");
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/429716.html
上一篇:從專案屬性設定文化資訊
