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

时间:2015-12-26 20:16:45

标签: c# wpf uwp

我正在“强制”使用button_Click(null,null)

的方法点击按钮

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

我原以为我可以使用if语句来检查if (sender.Equals(null)),但这只是一个猜测而且没有用。我很抱歉,如果这似乎,请给我一个答案,但我没有找到类似的东西。

2 个答案:

答案 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
}