3

当用户在按钮上按回车键(而不是鼠标单击按钮)时,是否有一种简单的方法来取消单击事件?

我试过:

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

        }
    }

但 ke 为空

4

5 回答 5

3
public void btnClick(object sender, EventArgs e)
{
  bool IsMouse = (e is System.Windows.Forms.MouseEventArgs);

  // If not mouse, they hit spacebar or enter
}
于 2013-09-25T18:31:06.417 回答
2

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

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

于 2013-09-25T18:26:08.480 回答
1

你可以做这样的事情

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
}
于 2013-09-25T18:33:00.300 回答
0

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

于 2013-09-25T18:33:14.653 回答
0
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
        {
            if ((keyData & Keys.KeyCode) == Keys.Enter)
            {
                SendKeys.Send("{Tab}");
                return true;
            }
            return false;
        }
于 2015-05-07T10:08:18.687 回答