如何区分button_click(null,null)和用户实际点击

本文关键字:null 用户 button click 何区 | 更新日期: 2023-09-27 18:28:17

我正在使用button_Click(null,null) 从方法"强制"单击按钮

button_Click方法中,我想区分实际点击和强制点击(button_Click(null,null))。

我想我可以使用if语句来检查if (sender.Equals(null)),但这只是猜测,不起作用。如果这看起来像,我很抱歉,请在谷歌上给我一个答案,但我没有找到类似的东西。

如何区分button_click(null,null)和用户实际点击

通常的处理方法是甚至不尝试处理它。

除非事件发生,否则不要调用事件处理程序。创建一个可重用的方法,该方法使用一个参数来指示是否有真正的按钮单击。然后用一个值从button_Click事件处理程序调用它,用另一个值的新方法调用它。

private void button_Click(object sender, EventArgs e) {
  HandleButtonClick(isRealClick: true);
}
private void SimulateButtonClick() {
  HandleButtonClick(isRealClick: false);
}
private void HandleButtonClick(bool isRealClick) {
  // ...
}

现在,不要调用button_Click(null, null),而是调用SimulateButtonClick()

调用button_Click(null, null)的缺点是,对于阅读您的代码的其他人来说,您的调用不应该更改为button_Click(button, EventArgs.Empty),这一点并不明显。这样的改变会破坏你的代码。如果可能的话,您应该编写易于理解和维护的代码。

由于您将null传递给eventargs,只需检查它是否为null(如果用户实际单击按钮/按enter键单击etc,则它不会为null)

if(e == null)
{
 // Button was forced
}