如何在外部浏览器中打开webBrowser控件中的链接?

Shi*_*eek 18 .net c# webbrowser-control winforms

我的Windows窗体应用程序中有一个textBox和一个webBrowser控件.每当用户在textBox中输入HTML代码时,webBrowser控件都会显示其编译的表单.这个代码:

private void textBox2_TextChanged(object sender, EventArgs e)
{
    webBrowser1.DocumentText = textBox2.Text;
}
Run Code Online (Sandbox Code Playgroud)

但是每当我单击webBrowser控件中的链接时,它都会在同一个webBrowser控件中打开它.我想要的是它应该在系统的默认Web浏览器中打开.那么这个处理链接点击的webBrowser控件有什么事件吗?

key*_*rdP 26

最简单的方法是拦截导航事件.

public void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e)
{
    //cancel the current event
    e.Cancel = true;

    //this opens the URL in the user's default browser
    Process.Start(e.Url.ToString());
}
Run Code Online (Sandbox Code Playgroud)


Tri*_*shi 8

我想在这个答案中添加更多内容,

每次更改webBrowser的内容时,都会执行Coz webBrowser1_Navigating方法.

在您的情况下,每当您将值设置为DocumentText时,都会调用此方法,并且当没有url且其默认值为about:blank时.所以我们也应该检查这个,否则它不会加载任何内容.

    private void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e)
    {
        if (!(e.Url.ToString().Equals("about:blank", StringComparison.InvariantCultureIgnoreCase)))
        {
            System.Diagnostics.Process.Start(e.Url.ToString());
            e.Cancel = true;
        }
    }
Run Code Online (Sandbox Code Playgroud)


Doz*_*789 5

此代码在这里应该起作用:

private void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e)
{
    System.Diagnostics.Process.Start(e.Url.ToString());

    e.Cancel = true;
}
Run Code Online (Sandbox Code Playgroud)

我尝试过这一点,以确保它确实有效!

希望这可以帮助!!