【发布时间】:2019-03-20 01:01:40
【问题描述】:
我正在尝试将 WebView 添加到 WinForm 以便在应用程序中使用现代浏览器。
从一个空白的 WinForm 开始,我添加了代码来创建 WebView 并将其添加到表单的控件中。
using System;
using System.ComponentModel;
using System.Windows.Forms;
namespace TestWebView
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
var wvc = new Microsoft.Toolkit.Win32.UI.Controls.WinForms.WebView();
((ISupportInitialize)wvc).BeginInit();
wvc.Dock = DockStyle.Fill;
Controls.Add(wvc);
((ISupportInitialize)wvc).EndInit();
// You can also use the Source property
wvc.Navigate(new Uri("https://www.microsoft.com"));
}
}
}
这编译并运行,但 EndInit() 调用没有完成。 不抛出异常。通话进入但不离开。
项目设置为 .NET Framework 4.7.1。我使用 NuGet 管理器将 Microsoft.Toolkit.WIn32.UI.Controls v4.0.2 添加到项目中。我正在按照https://blogs.windows.com/msedgedev/2018/05/09/modern-webview-winforms-wpf-apps/ 上的说明进行操作
为什么这不起作用?
【问题讨论】:
-
如果您将 Controls.Add 移出 Begin/EndInit 块,它会起作用吗?
-
您是否尝试过工具箱版本的控件,将一个放在窗体上?检查生成的代码可能很有用。该模式应该与实现
ISupportInitialize的其他控件使用的相同(例如,PictureBox、TrackBar...)。 -
@Steve:我将 Add() 移出 Begin/EndInit。它仍然挂起。
-
@Jimi:InitializeComponent() 调用 EndInit() 并且永远不会返回。它与非工具箱代码具有相同的行为。
-
您是否尝试过库中包含的 WinForms 项目?结果一样吗?那台机器上有 Edge 吗:)
标签: c# winforms webview toolkit