我在使用 Gecko Webbrowser 控件时遇到了一个相当奇怪的问题,我创建了自己的类,它继承了 Gecko Webcontrol,并且在它的构造函数中我设置了一个事件:
class fooGeckoClass: Gecko.GeckoWebBrowser
{
public fooGeckoClass()
{
this.DomClick += new EventHandler<Gecko.GeckoDomEventArgs>(fooEventFunction);
}
private static void fooEventFunction(Object sender, Gecko.GeckoDomEventArgs e)
{
((Gecko.GeckoWebBrowser)sender).Navigate("www.foo.com");
}
}
我在手动创建的 UserControl 中使用了其中三个控件,这些控件在启动时从配置文件动态加载并添加了 UserControl 控件集合。当单击三个控件中的任何一个时,所有三个控件都将导航到远离原始站点的“www.foo.com”。我看了看:
e.StopPropagation();
它指定它在事件流期间停止事件的进一步传播,但是它也指定它将处理当前流中的所有事件,我相信在这有机会阻止它之前必须已经将事件提供给控件因为这三个控件仍然会触发事件。我也试过 e.Handled = true 无济于事。以前有没有人遇到过这个问题并且有任何解决方案让它只在被点击的控件上触发?
编辑:
可能值得展示控件是如何添加到表单中的,因为这一定是问题发生的地方(如果控件只是放在小型测试应用程序的用户控件中,则不会发生)。
private void fooUserControl_Load(object sender, EventArgs e)
{
if (!this.DesignMode)
{
for (int iControls = 0; iControls < geckObs.Count(); iControls ++)
{
fooGeckoClass geckControl = new fooGeckoClass();
this.Controls.Add(geckControl );
break;
}
}
}