c# - 在没有发生的情况下执行事件

时间:2012-05-30 11:04:04

标签: c# events

如果事件没有发生,我怎么能执行一个事件?

例如,如何在不单击按钮的情况下在代码中执行button1_Click()事件?

问题是我有一个WebClient,它会加载文件列表。  每次完成下载文件时,它都会执行DownloadFileCompleted事件,然后下载下一个文件。

但是,某些文件没有下载(全部在计划中),因此不会执行该事件。我怎么能执行它? 感谢

6 个答案:

答案 0 :(得分:7)

只需将事件处理程序中存在的所有代码插入单独的函数中,例如

private void button1_click(...)
{
    func(...)
}


public void func(...)
{
    //even handler code
}

如果你没有举起什么活动,或者不能,请致电

func(...)

我个人反对明确地调用事件处理程序,但更喜欢这种方法。 对我来说似乎更清晰的代码结构。

答案 1 :(得分:1)

你可以只为它提供空值并将其称为普通函数(毕竟,它是一个普通函数,只需要一个发送者和相应的事件参数)。 E.g。

button_click(new object(), new System.EventArgs());

这些是标准GUI按钮的正常事件,您的按钮可能需要不同的事件。如果您只需要按钮来检测点击并且不想使用事件参数,则此方法有效。

答案 2 :(得分:1)

控件通常具有引发事件的能力,例如在您的情况下Button.PerformClick

答案 3 :(得分:0)

button1_Click()只是一个方法,所以即使你将它绑定到一个事件,你也可以执行它。

答案 4 :(得分:0)

您应该将代码移出事件处理程序并转移到函数中。

然后,您可以从事件和触发它所需的任何其他方法调用此函数。

所以而不是:

private void button1_Click()
{
    //do something
}

你有:

private void button1_Click()
{
    doSomething();
}

public void doSomething()
{
    //do something
}

答案 5 :(得分:0)

如果您的按钮名称是 button1 ,您可以按照以下代码行提出点击事件:

button1.PerformClick();

希望这有帮助!

修改

或者像其他人所说的那样,将你的逻辑放在一个单独的方法中,并在需要时调用该方法。