C#Web浏览器控制块父';s加载事件

C#Web浏览器控制块父';s加载事件,c#,winforms,events,webbrowser-control,C#,Winforms,Events,Webbrowser Control,这可能会让人觉得难以置信的愚蠢,但我不知道: 我是个白痴 我误解了什么 MS Web浏览器控件存在错误 我宁愿认为是后者 我在WinForms用户控件中有一个Web浏览器控件。它已经在设计时添加到控件中,理论上,在控件的加载事件中,它应该导航到Google 看起来很简单 不过 public partial class TVHost : UserControl { public TVHost() { InitializeComponent(); }

这可能会让人觉得难以置信的愚蠢,但我不知道:

  • 我是个白痴
  • 我误解了什么
  • MS Web浏览器控件存在错误
我宁愿认为是后者

我在WinForms用户控件中有一个Web浏览器控件。它已经在设计时添加到控件中,理论上,在控件的加载事件中,它应该导航到Google

看起来很简单

不过

public partial class TVHost : UserControl
{
    public TVHost()
    {
        InitializeComponent();
    }

    private void TVHost_Load(object sender, EventArgs e)
    {     
        webBrowser1.Navigate("http://google.co.uk");  
    }
}
这不管用。没有错误,什么都没有。插入断点/调试行表明加载事件甚至没有被调用

此时,我决定检查Designer.cs文件中是否正确设置了加载事件

 this.Load += new System.EventHandler(this.TVHost_Load);
似乎合法

如果从表单中删除web浏览器控件,则会触发加载事件

我一点也不明白,一个控件怎么能阻止一个使用它的方法首先触发呢

接着,我发现:

TL;链接的DR如下所示:“如果表单上的webbrowser设置为Visible=true,则加载将不起作用”

当然,如果我将webbrowser的默认可见性更改为false,控件的加载事件将触发。我可以通过在加载事件中设置浏览器的可见性来解决此问题

private void TVHost_Load(object sender, EventArgs e)
{
    webBrowser1.Visible = true;
    webBrowser1.Navigate("http://google.co.uk");
}
很奇怪

虽然这个“修复”有效,但我发现它令人难以置信地骇人,我想知道是否有人对这种行为有任何解释


令人惊讶的是,我在2005年遗留下来的MS Connect中发现了这个bug-

来自您链接到的:

现在,如果您想触发加载事件,可以在属性网格中设置WebBrowser控件的URL属性。URL可以是您想要的任何内容,甚至可以是:如果您不希望它以加载的页面开始,则为空


因此,如果您进入设计器并将
WebBrowser
的属性设置为字符串
about:blank
(它告诉
WebBrowser
加载一个空页面),那么您的用户控件应该再次开始获取它的
load
事件。

检查此项并尝试@V4Vendetta,但也不起作用。不管怎样,还是要谢谢你。谷歌搜索的结果让我找到了很多关于这个bug的参考资料,我没有看到比我现在先把它设置为不可见更好的修复方法了。萨德法西:我发现了这可能会给你一些线索。@KingCronus听着,伙计!微软的产品中没有bug,所以别胡说了!