从本站购买授权控件库,把许可证命名为GTKSystem.Windows.Forms.WebBrowser.license
引用webview的工程项目,需要引入以下类:
GtkSharp.dll
GTKSystem.Windows.Forms.dll
GTKSystem.Windows.Forms.WebBrowser.dll
Microsoft.Web.WebView2.Core.dll
webview提供6个接口:
public interface IWebBrowser
{
event ResponseChangeHandler ResponseChange;
event WebCallbackHandler WebCallback;
void GetWebContent(System.Action<string> webcontent);
void NavigateHtml(string html);
void NavigateUri(string uri);
Task<string> ExcuteScript(string js);
}
前后端程序互调:
(1)js回调c#:webview控件内置了一个js回调方法webview_callback(message),在网页端执行方法 webview_callback(message),可以在c#端事件 event WebCallbackHandler WebCallback 上返回message。
(2)c#端执行js:执行方法 Task ExcuteScript(string js) ,如需返回值,需要在js上执行webview_callback(message)
如:
webBrowser.ExcuteScript(" webview_callback('这是发送内容') ") .ContinueWith(t => {
Console.WriteLine(t.Result); //接收内容'这是发送内容'
});
程序示例:
public FormWeb()
{
InitializeComponent();
//使用方法一
webBrowser = new WebviewBox();
webBrowser.Width = 300;
webBrowser.Height = 500;
webBrowser.Dock = DockStyle.Fill;
webBrowser.ResponseChange += WebBrowser_ResponseChange;
webBrowser.WebCallback += WebBrowser_WebCallback;
panel1.Controls.Add(webBrowser);
// 注:panel1是一个容器控件,如Panel,用于设计占位
//使用方法二
//webBrowser = new WebBrowser(this, panel1);
//webBrowser.ResponseChange += WebBrowser_ResponseChange;
//webBrowser.WebCallback += WebBrowser_WebCallback;
}
private void WebBrowser_ResponseChange(object? sender, int statusCode, string mimeType)
{
Console.WriteLine($"{statusCode},{mimeType}");
}
private void WebBrowser_WebCallback(string message)
{
Console.WriteLine($"{message}");
}
private void Button1_Click(object sender, EventArgs e)
{
webBrowser.NavigateUri("https://www.baidu.com"); //打开网页
}