输入按下时按下button_click事件

时间:2013-09-25 18:24:20

标签: c# buttonclick eventargs keyeventargs

当用户点击按钮进入按钮时(而不是鼠标点击按钮?),这是一种简单的取消点击事件的方法吗?

我尝试过:

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

        }
    }

但是凯是空的

5 个答案:

答案 0 :(得分:3)

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

  // If not mouse, they hit spacebar or enter
}

答案 1 :(得分:2)

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

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

答案 2 :(得分: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
}

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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