2012-03-01 142 views
0

这是我们要处理的方法,它从它的参数需要的所有是,EventArgs的,因此它可以从它如何避免直接致电事件?

private void sshResults_ButtonClicked(object eventSender, EditorNotifyEventArgs eventArgs) 

但消费者呼吁像这样得到传播的行和列:

this.sshResults_ButtonClicked(null, new EditorNotifyEventArgs(new SpreadView(), null, Row - 1,Column - 1)); 

我不想这样称呼,只是传递行和列的资源太多。 什么是重写这个的好方法?也许我可以创建另一个方法,将第一个方法的全部副本粘贴到它中,并将行和列传递给它?那么它会导致代码冗余?有500个地方我们正在使用sshResults_ButtonClicked,但我只是想改变上面提到的一个,所以我不想摆脱sshResults_ButtonClicked。

回答

4

sshResults_ButtonClicked的适当部分重构为其自己的方法,并从事件处理程序调用它而不是,并且您要明确调用它的位置

1

声明下面的方法:

private void InvokeEvent(EventHandler<EditorNotifyEventArgs> eventHandler, int row, int column) 
{ 
    if (eventHandler != null) 
    eventHandler(null, new EditorNotifyEventArgs(new SpreadView(), null, row - 1,column - 1)); 
} 

,并调用它,当需要提高的事件: InvokeEvent(this.YourEventName, Row, Col);

无论如何,我不认为你需要调用一个事件处理程序 - 这将是在事件发生时调用。您想改为举办活动。

+0

谢谢,但我的目标是不使用新的EditorNotifyEventArgs(新的SpreadView()部分。 – Bohn 2012-03-01 22:11:33

+1

添加更多描述的答案:) – 2012-03-01 22:18:23