Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#是否可以用代码触发按钮点击事件?_C#_.net_Winforms - Fatal编程技术网

c#是否可以用代码触发按钮点击事件?

c#是否可以用代码触发按钮点击事件?,c#,.net,winforms,C#,.net,Winforms,我不想点击按钮。相反,我只想运行click事件代码。我该怎么做呢?尝试一个带有p/invoke的keybd\u事件我有时会通过调用事件处理函数来实现它,如果我真的实现了它的话。 从字面上说,就像: button1_Click(this, new EventArgs()); 从表单的内部或外部按钮在哪里?最简单的方法是只调用函数: Button1_Click(Button1, EventArgs.Empty); 选项:使用PerformClick() 请看这里: 这里的优点是,事件行为与实际的

我不想点击按钮。相反,我只想运行click事件代码。我该怎么做呢?

尝试一个带有p/invoke的keybd\u事件

我有时会通过调用事件处理函数来实现它,如果我真的实现了它的话。
从字面上说,就像:

button1_Click(this, new EventArgs());

表单的内部或外部
按钮在哪里?最简单的方法是只调用函数:

Button1_Click(Button1, EventArgs.Empty);

选项:使用
PerformClick()

请看这里:

这里的优点是,事件行为与实际的按钮单击完全相同(与直接调用
button1\u click
相比)


但这些选项都不是最好的IMHO。如果需要调用事件处理程序代码,则需要一个新方法!只需将旧的
按钮1\u单击
转换为新的标准方法,并在任何地方调用它。

并祈祷不要使用
sender
参数。如果您想使用sender,只需将其改为null即可。简短的答案是肯定的!如果您可以控制单击事件处理程序中的代码,那么正确的做法是将该代码提取到可以从任何地方调用的单独方法中。+1:我一直认为
PerformClick
比直接调用按钮的处理程序要好,因为框架比您更了解它需要做的任何特殊事情。它还解决了Ben Voigt关于
sender
参数的评论。+1对于重构旧按钮1u单击,意义重大
Button1_Click(Button1, EventArgs.Empty);