首先,我们需要向项目中的引用(reference)中添加两个动态库dll,
一个是.NET库中的System.Windows.Forms
,
另外一个是WindowsFormsIntegration
;
using System.Windows.Shapes;
using System.ComponentModel;
using System.Windows.Controls.Primitives;
using System.Windows.Forms;
namespace WpfApp1
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : System.Windows.Controls.UserControl
{
System.Windows.Forms.WebBrowser web;
public MainWindow()
{
InitializeComponent();
System.Windows.Forms.Integration.WindowsFormsHost host = new System.Windows.Forms.Integration.WindowsFormsHost();
web = new System.Windows.Forms.WebBrowser();
web.Url = new Uri("http://www.baidu.com/");
web.ScriptErrorsSuppressed = true;
web.AllowWebBrowserDrop = false;
web.WebBrowserShortcutsEnabled = false;
web.IsWebBrowserContextMenuEnabled = false;
host.Child = web;
grid.Children.Add(host);
web.DocumentCompleted += (sender, e) =>
{
//将所有的链接的目标,指向本窗体
foreach (HtmlElement archor in this.web.Document.Links)
{
archor.SetAttribute("target", "_self");
}
//将所有的FORM的提交目标,指向本窗体
foreach (HtmlElement form in this.web.Document.Forms)
{
form.SetAttribute("target", "_self");
}
};
web.NewWindow += (sender, e) =>
{
e.Cancel = true;
};
}
}
}
<UserControl x:Class="WpfApp1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp1"
mc:Ignorable="d" d:DesignHeight="688" d:DesignWidth="1366" UseLayoutRounding="True">
<Grid x:Name="grid">
</Grid>
</UserControl>