C#从另一个方法调用事件(linkLabel2_LinkClicked)

时间:2016-04-29 22:42:24

标签: c# winforms eventhandler linklabel

我的表单上有一个事件处理程序,用于LinkLabel linkLabel2_LinkClicked:

private void linkLabel2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
    //code here
}

我需要从另一个没有对象发送者和任何eventargs的方法中调用它:

private void UpdateMethod()
{
    linkLabel2_LinkClicked(this, ?????)
}

如果是按钮,我只需调用PerformClick方法。但是我找不到LinkLabel这样的东西。

linkLabel2_LinkClicked事件处理程序中执行代码的最佳做法是什么?

更新:我想我对此并不清楚。我对这种方法的最佳实践感到疑惑。我可以从答案中看到,这不是正确的方法,而是将代码移动到单独的方法并直接从其他方法调用它。如果有任何其他推理,请告诉我。

更新2:我现在重写了代码如下:

private void linkLabel2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
    CreatePreview();
}

private void UpdateMethod()
{
    CreatePreview();
}

private void CreatePreview()
{
    //code comes here
}

效果很好。

2 个答案:

答案 0 :(得分:3)

您可以在事件参数中添加null:

linkLabel2_LinkClicked(this, null);

或创建一个新的事件对象:

linkLabel2_LinkClicked(this, new LinkLabelLinkClickedEventArgs());

但最好的方法是创建一个单独的方法,并在每次需要时调用它。

答案 1 :(得分:2)

你可以传递null因为你还没有使用参数,但我建议不要这样做。不鼓励直接调用事件,这导致代码难以阅读。

让其他方法调用CreatePreview()

private void UpdateMethod()
{
    CreatePreview();
}