2012-11-05 139 views
1
new System.Windows.Forms.MouseEventHandler(this.eventFunction) 

上面发送'object sender'和'MouseEventArgs e'给我的事件函数。我需要发送另一个对象,但如果我使用:创建自定义事件处理程序需要帮助

System.Windows.Forms.MouseEventHandler(this.eventFunction(object, MouseEventArgs, objectINeed)); 

它不起作用。它只是说有一个无效的论点。即使我公然向它发送一个对象MouseEventArgs对象。

任何人都可以提供任何见解吗?

+0

你想传递什么对象? –

+0

http://www.switchonthecode.com/tutorials/csharp-snippet-tutorial-custom-event-handlers –

+0

但是,我认为你应该能够从'MouseEventArgs'或'EventArgs'继承并创建你自己的。 – IAbstract

回答

0

不会导致对象发送者应该已经拥有需要传递给事件的信息。该事件附加到该对象。

您可以创建一个方法,该方法可以从事件内部调用以检索所需的对象或数据。

或者您可能会让您需要的对象的范围过高,以致它已经可用于事件。

+0

我想过这样做。我将不得不用类的范围创建一个对象,因为我想发送的对象是动态创建的,并且只具有我从中调用它的特定方法的范围。我只是想避免它,因为在任何给定的时间可以有多个,所以我将不得不稍微改变实现。我可以以某种方式访问​​它,因为当我离开该方法时它仍然存在。我只是想看看是否有一种我错过的方式,可以让我把它与事件一起发送。 – user1427105

0

你可以这样做:

new System.Windows.Forms.MouseEventHandler((s, e) => this.eventFunction(objectINeed, e)); 

但是,为什么你需要吗?