如何区分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
事件处理程序调用它,用另一个值的新方法调用它。
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
}