C# 在C中为HtmlDocument.MouseDown分配事件处理程序的正确方法?
既然您只能在加载文档后分配它,并且您不需要每次加载文档时都分配它,那么除了这样做,我难道没有其他选择吗C# 在C中为HtmlDocument.MouseDown分配事件处理程序的正确方法?,c#,.net,C#,.net,既然您只能在加载文档后分配它,并且您不需要每次加载文档时都分配它,那么除了这样做,我难道没有其他选择吗 private void WebBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { if (!mouseDownAssigned) // mouseDownAssigned is a bool with start value false {
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);
}
}
这有点难看也不优雅。我觉得这不是微软的想法。我也不相信微软的想法。如果我不得不猜测的话,这是因为文档和web浏览器之间存在某种代理,它执行事件处理,只有在加载第一个文档时才会初始化,而不是在加载控件时初始化。我认为这是最接近完美的解决方案:
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)
{
}
这样,我就不需要每次文档完成时都检查变量。我猜这就是微软的想法。在我看来没那么糟糕。你认为什么样的代码更优雅?我也有同样的问题…我必须找到另一种方法去做我想做的事,你想做什么?