【发布时间】:2014-06-23 10:18:26
【问题描述】:
我期望会发生什么
网页在表单内打开。
真正发生的事情
网页在默认浏览器(在本例中为 Chrome)中打开。
代码
Navigate(string) sn-p 直接从MSDN 复制而来。
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;结果相同。
更新
- 事实证明,所有基于 Web 的 UI 控件都会发生这种情况。 (发帖a question on superuser.)
【问题讨论】:
-
我已经尝试过您的代码,它可以正常工作。你的问题到底是什么?您的意思是该页面是在您计算机上的浏览器中打开的,而不是在表单的 webBrowser 控件中打开的?
-
尝试从其他地方调用 Navigate 方法,而不是从构造函数。从 OnLoad 事件处理程序调用它
-
@Lev 在“到目前为止我做了什么”中添加了您的建议,但仍然不起作用。我认为我的操作系统设置有问题。 (待办事项:在另一台计算机上尝试。)
-
但是发生了什么?该页面是在计算机的浏览器中打开的,而不是在 webBrowser 控件中?
-
@Lev 是的。我问了this question on superuser,因为我发现所有基于 Web 的控件都会受到影响,而不仅仅是 WinForms。
标签: c# .net winforms windows-xp webbrowser-control