這可能會遇到的令人難以置信的愚蠢,但我想不通,如果:C#Web瀏覽器控件塊父母的Load事件
- 我是一個白癡
- 我誤解的東西
- 的MS Web瀏覽器控制被竊聽
我更喜歡認爲它是後者。
我在WinForms用戶控件中有一個Web瀏覽器控件。它在設計時被添加到控件中,理論上在控件的Load事件中,它應該導航到Google。
似乎很簡單。
但是,
public partial class TVHost : UserControl
{
public TVHost()
{
InitializeComponent();
}
private void TVHost_Load(object sender, EventArgs e)
{
webBrowser1.Navigate("http://google.co.uk");
}
}
這不起作用。沒有錯誤,只是沒有。插入斷點/調試行顯示我Load事件甚至不被調用。
我現在決定檢查在Designer.cs文件中正確設置了Load事件。
this.Load += new System.EventHandler(this.TVHost_Load);
似乎合法。
如果我從窗體中刪除Web瀏覽器控件,則會觸發加載事件。
我不明白這一點,一個控件如何能夠防止一開始就使用它的方法?
移動的,我發現這一點: http://social.msdn.microsoft.com/Forums/en-US/Vsexpressvcs/thread/d6e427b2-9cc9-4318-bb05-11363025e3f7/
TL; DR是該鏈接如下:「如果你有被設置爲可見形式於網絡瀏覽器加載行不通=真正的」
所以很確定,如果我將web瀏覽器的默認可見性更改爲false,則會觸發控件的加載事件。我可以通過在加載事件中設置瀏覽器的可見性來解決該問題。
private void TVHost_Load(object sender, EventArgs e)
{
webBrowser1.Visible = true;
webBrowser1.Navigate("http://google.co.uk");
}
很奇怪。
雖然這個「修復」的作品,我覺得它非常hacky,並想知道是否有任何人對此行爲的解釋?
令人驚訝的是,我發現在MS連接這個bug,從2005年遺留下來的 - http://connect.microsoft.com/VisualStudio/feedback/details/116535/when-adding-a-webbrowser-control-to-a-user-control-the-load-will-not-fire#
看看這個http://stackoverflow.com/questions/2220483/usercontrol-load-event-not-fired – V4Vendetta
試過@ V4Vendetta,也沒有工作。不管怎麼說,還是要謝謝你。 – KingCronus
多一點谷歌搜索導致我發現這個錯誤的許多參考,我沒有看到比我目前設置爲隱形的第一個更好的修復。 * sadface * – KingCronus