我正在“强制”使用button_Click(null,null)
在button_Click
方法中,我想区分实际点击和强制点击(button_Click(null,null)
)。
我原以为我可以使用if语句来检查if (sender.Equals(null))
,但这只是一个猜测而且没有用。我很抱歉,如果这似乎,请给我一个答案,但我没有找到类似的东西。
答案 0 :(得分:5)
通常的处理方式是甚至不试图处理它。
除非事件发生,否则请勿调用您的事件处理程序。创建一个可重用的方法,该方法接受一个参数来指示您是否有真正的按钮单击。然后使用一个值从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)
并不明显。这样的改变会破坏你的代码。如果可能,您应该编写代码,以便易于理解和维护。
答案 1 :(得分:1)
由于您将null传递给eventargs,只需检查它是否为null(如果用户实际单击按钮它将不为null /按Enter键单击等)
if(e == null)
{
// Button was forced
}