由于您只能在加载文档后分配它,并且每次加载文档时都不需要分配它,我是否除了做这样的事情之外别无其他选择?
private void WebBrowser_DocumentCompleted(object sender,
WebBrowserDocumentCompletedEventArgs e)
{
if (!mouseDownAssigned) // mouseDownAssigned is a bool with start value false
{
mouseDownAssigned = true;
this.Document.MouseDown +=
new HtmlElementEventHandler(Document_MouseDown);
}
}
哪个有点丑,不优雅。感觉这不是微软想到的。
答案 0 :(得分:0)
我不相信这也是MS的想法。如果我不得不猜测,它来自这样一个事实,即文档和Web浏览器之间存在某种代理,它执行事件处理,只在加载第一个文档时进行初始化,而不是在加载控件时。< / p>
答案 1 :(得分:0)
我认为这是最接近优雅解决方案的:
public MyWebBrowser()
{
InitializeComponent();
this.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(SuperWebBrowser_DocumentCompleted);
this.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(SuperWebBrowser_DocumentFirstCompleted);
}
private void SuperWebBrowser_DocumentFirstCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
this.DocumentCompleted -= new WebBrowserDocumentCompletedEventHandler(SuperWebBrowser_DocumentFirstCompleted);
this.Document.MouseDown += new HtmlElementEventHandler(Document_MouseDown);
}
private void SuperWebBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
}
这样我每次文档完成时都不需要检查变量。猜猜这有点像微软的想法。