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浏览器控件存在错误
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,所以别胡说了!