【发布时间】:2012-06-20 08:50:00
【问题描述】:
我对 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;
}
}
}
【问题讨论】: