按下回车键时中断button_click事件

本文关键字:button click 事件 中断 回车 | 更新日期: 2023-09-27 18:32:44

当用户点击回车按钮(而不是鼠标点击按钮)时取消点击事件的简单方法吗?

我尝试过:

    private void button3_Click(object sender, EventArgs e)
    {
        KeyEventArgs ke = e as KeyEventArgs;
        if (ke != null)
        {
            if (ke.KeyCode == Keys.Enter)
            {
                return;
            }
        }
    }

但 ke 为空

按下回车键时中断button_click事件

public void btnClick(object sender, EventArgs e)
{
  bool IsMouse = (e is System.Windows.Forms.MouseEventArgs);
  // If not mouse, they hit spacebar or enter
}

是的,它将为空。 因为EventArgs不是KeyEventArgs

KeyEventArgs将作为参数传递给KeyDownKeyUp事件。你把事情搞砸了。

你可以做这样的事情

private bool flag = false;
private void button1_KeyPress(object sender, KeyPressEventArgs e)
{
    if (e.KeyChar == (char)Keys.Return)
    {
        flag = true;
    }
}
private void button1_Click(object sender, EventArgs e)
{
    if (flag)
    {
        flag = false;
        return;
    }
    //else do original task
}

您可以处理按钮的 KeyPress 事件并在那里禁用或忽略回车键,而不是在按钮单击中返回

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
        {
            if ((keyData & Keys.KeyCode) == Keys.Enter)
            {
                SendKeys.Send("{Tab}");
                return true;
            }
            return false;
        }