为什么所有页面都在默认浏览器中而不是在表单内打开?

时间:2014-06-23 10:18:27

标签: c# .net winforms windows-xp webbrowser-control

我期待发生的事情

网页在表单内打开。

Expected

真正发生的事情

网页会在默认浏览器中打开(在本例中为Chrome)。

Issue

守则

直接从MSDN复制Navigate(string)代码段。

  using System;
  using System.Windows.Forms;

  namespace BrowserFrame
  {
      public partial class BrowserForm: Form
      {
          public BrowserForm()
          {
              InitializeComponent();
              Navigate("http://www.stackoverflow.com");
          }

          private void Navigate(String address)
          {
              if (String.IsNullOrEmpty(address)) return;
              if (address.Equals("about:blank")) return;
              if (!address.StartsWith("http://") &&
                  !address.StartsWith("https://"))
              {
                  address = "http://" + address;
              }
              try
              {
                  webBrowser1.Navigate(new Uri(address));
              }
              catch (System.UriFormatException)
              {
                  return;
              }
          }
      }
  }

我到目前为止做了什么

  • 更改默认浏览器(例如IE,Firefox)会在默认浏览器中打开该页面。
  • 直接使用webBrowser1.Navigate(new Uri("http://www.stackoverflow.com"));可以做同样的事情。
  • 尝试从其他事件(例如OnLoad,MouseClick)调用Navigate;同样的结果。

更新

1 个答案:

答案 0 :(得分:1)

我不明白为什么它会在外部浏览器中打开,因为它不会发生在我身上,但你可以尝试一下,看看它是否有所作为。

你试过了吗?

webBrowser1.Navigate(address);没有使用Uri?

它适用于我,它不需要http://https://

我猜他们在类构造函数中为字符串自动化了。

或许您可以尝试更改为这个简单的版本:

public BrowserForm()
{
     InitializeComponent();
     webBrowser1.Navigate("http://www.stackoverflow.com");
}

看看它是否有帮助。