我怎么能在没有实际发生的情况下执行一个事件?
例如,如何button1_Click()
在不单击按钮的情况下在代码中执行事件?
问题是我有一个WebClient
,它下载文件列表。每次完成下载文件时,它都会执行一个DownloadFileCompleted
事件,然后下载下一个文件。
但是,某些文件没有下载(全部在计划中),因此没有执行该事件。我怎么能执行它?谢谢
只需将事件处理程序中存在的所有代码插入一个单独的函数中,例如
private void button1_click(...)
{
func(...)
}
public void func(...)
{
//even handler code
}
如果你不知道要引发什么事件,或者不能,只需调用
func(...)
我个人反对显式调用事件处理程序,但更喜欢这种方法。对我来说似乎更清晰的代码结构。
控件通常具有引发事件的能力,例如Button.PerformClick在您的情况下
您可以只给它提供空值并像普通函数一样调用它(毕竟,它是一个普通函数,只需要一个发送者和适当的事件参数)。例如
button_click(new object(), new System.EventArgs());
这些是标准 GUI 按钮的正常事件,您的按钮可能需要不同的事件。如果您只需要您的按钮来检测点击并且不想使用事件参数,则此方法有效。
button1_Click() 只是一个方法,因此即使将其绑定到事件也可以执行它。
您应该将代码从事件处理程序中移出并放入函数中。
然后,您可以从事件和您需要触发它的任何其他方法调用此函数。
所以而不是:
private void button1_Click()
{
//do something
}
你有:
private void button1_Click()
{
doSomething();
}
public void doSomething()
{
//do something
}
如果您的 Button 的名称是button1,您可以通过以下代码行引发点击事件:
button1.PerformClick();
希望这可以帮助!
编辑:
或者像其他人说的那样,将您的逻辑放在一个单独的方法中,并在需要时调用该方法。