这是我们想要处理的方法,它的参数需要的是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。
答案 0 :(得分:4)
将sshResults_ButtonClicked
的相应部分重构为自己的方法,然后从事件处理程序中调用,并在其中明确调用它。
答案 1 :(得分: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);
无论如何,我认为你不需要调用事件处理程序 - 它将在引发事件时被调用。你想要举办一个活动。