【问题标题】:Button Click Event doesn't fire when clicking same button twice in a row连续两次单击相同按钮时,按钮单击事件不会触发
【发布时间】:2014-02-19 04:11:52
【问题描述】:

所以,一个奇怪的...我有一个非常简单的表单,上面有 10 个按钮。每个作为一个数字就可以了 0-9。它们都有相同的Click Event Handler,如下所示。

如果我连续单击 4 个不同的按钮,它会感觉流畅并按预期工作。
但是,如果我连续两次单击相同的按钮(数字),则第二次单击时会出现明显的延迟。我一辈子都想不通为什么....

void uxNumberClicked(object sender, EventArgs e)
{
  int num = Convert.ToInt32(((GradientButton)sender).Text);

  if (this.uxPIN.Text.Length < 4)
    uxPIN.Text += num;    
  else
    SystemSounds.Beep.Play();
}

【问题讨论】:

  • 我对此有点困惑。你是说你点击的是同一个按钮,就像你双击它一样,还是你点击它然后暂停然后再次点击?
  • 第二个...也许它变得混乱并认为我在双击...例如,如果我输入 8540 我可以尽可能快地单击它并注册所有 4 次点击。但是,如果我输入 0221,则在第二个 2 上它不会注册(单击事件不会触发),我最终会等待一秒钟并再次单击它。
  • 我是个白痴……你不经意间给了我答案。双击事件正在触发。太棒了,现在真正的问题是如何抑制它。
  • 你可以从双击处理程序中调用单击处理程序
  • true...看起来我也可以使用不同的事件,例如Mouse_Down...见这里 -->stackoverflow.com/questions/8561585/…

标签: c# .net compact-framework windows-ce


【解决方案1】:

根据我们的 cmets,Mouse_Down 看起来像这样:

private void uxNumber_MouseDown(object sender, MouseButtonEventArgs e)
{
    if (e.LeftButton == MouseButtonState.Pressed)
    {
            int num = Convert.ToInt32(((GradientButton)sender).Text);

        if (this.uxPIN.Text.Length < 4)
            uxPIN.Text += num;    
        else
        SystemSounds.Beep.Play();
    }

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-19
    • 1970-01-01
    • 1970-01-01
    • 2020-02-20
    • 2021-06-27
    • 1970-01-01
    • 2016-04-25
    • 2012-09-12
    相关资源
    最近更新 更多