C#代码中是否可能通过编程方式触发按钮的点击事件?

6
我不想点击按钮,我只想运行单击事件代码。我该如何做?

1
简短的回答是:是的! - abhi
1
如果您在单击事件处理程序中控制代码,则正确的做法是将该代码提取到一个单独的方法中,以便可以从任何地方调用。 - snarf
5个回答

12
button1_click(null, new EventArgs() );

4
祈祷 sender 参数未被使用。 - Ben Voigt
1
如果您想使用发送者,则只需将其放在null的位置。 - cichy

9

选项:使用PerformClick()

看一下这里:如何:以编程方式调用按钮的单击事件

这里的优点是事件行为将与实际按钮单击完全相同(而不是直接调用button1_click)。

但在我看来,这些选项都不是最好的。如果您需要调用事件处理程序代码,您需要一个新方法!只需重构旧的button1_click成为一个新的、标准的方法,然后从任何地方调用它。


1
+1:我一直认为PerformClick比直接调用按钮处理程序更好,因为框架知道是否需要执行任何特殊操作。它还解决了Ben Voigt关于sender参数的问题。 - Powerlord
1
重构旧的button1_click代码,简直太有意义了。 - Spooks

2

Button所在的Form内部或外部调用?最简单的方法就是直接调用该函数:

Button1_Click(Button1, EventArgs.Empty);

1

有时我会通过实际调用事件处理程序函数来做到这一点,前提是我已经实现了它。
字面上的调用方式如下:

button1_Click(this, new EventArgs());

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接