WebBrowser-Control - 单击链接打开默认浏览器

Ben*_*ual 5 .net c# wpf webbrowser-control

我在我的WPF应用程序中使用WebBrowser-Control

    <WebBrowser x:Name="webBrowser" Margin="0,28,0,0" />
Run Code Online (Sandbox Code Playgroud)

现在,当我导航到包含链接的mht页面并且用户单击此链接之一时,将在WebBrowser-Control中打开新页面.但它应该在一个新的Default-Browser-Window中打开.不应更改WebBrowser-Control中的内容.有没有办法改变这种行为?

Răz*_*nda 14

您可以使用导航事件中的Proces.Start()在默认浏览器中打开新页面并进行设置e.Cancel = true;,以使控件中的页面不会更改.

例:

@ MainWindow.xaml.cs

using System.Diagnostics;
using System.Windows;
using System.Windows.Navigation;

namespace OpenDefaultBrowser
{
    public partial class MainWindow : Window
    {
        private static bool willNavigate;

        public MainWindow()
        {
            InitializeComponent();
        }

        private void webBrowser1_Navigating(object sender, NavigatingCancelEventArgs e)
        {
            // first page needs to be loaded in webBrowser control
            if (!willNavigate)
            {
                willNavigate = true;
                return;
            }

            // cancel navigation to the clicked link in the webBrowser control
            e.Cancel = true;

            var startInfo = new ProcessStartInfo
            {
                FileName = e.Uri.ToString()
            };

            Process.Start(startInfo);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

@ MainWindow.xaml

<Window x:Class="OpenDefaultBrowser.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="464" Width="1046">
    <Grid>
        <WebBrowser Height="425" HorizontalAlignment="Left" Name="webBrowser1" VerticalAlignment="Top" Width="1024" Source="http://stackoverflow.com/" Navigating="webBrowser1_Navigating" />
    </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)