用户一次只能按住一个键盘按钮

时间:2010-09-03 10:42:48

标签: c# winforms

我有一个标准的WinForms应用程序。我想实现这样的功能:

用户一次只能按住一个键盘按钮。如果他按下按钮,按下另一个按钮,则无法获得结果。

PS:此行为仅传播到我想要的表单,而不是所有形式的应用程序。

C#,2.0 - 3.5,VS 2008

2 个答案:

答案 0 :(得分:1)

我得到了类似于Khadaji的东西

private Keys CurrentKey = Keys.None;

private void Form1_KeyDown(object sender, KeyEventArgs e)
{
    if (CurrentKey == Keys.None)
    {
        CurrentKey = e.KeyData;
        // TODO: put your key trigger here
    }
    else
    {
        e.SuppressKeyPress = true;
    }

}

private void Form1_KeyUp(object sender, KeyEventArgs e)
{
    if (e.KeyData == CurrentKey)
    {
        // TODO: put you key end trigger here
        CurrentKey = Keys.None;
    }
    else
    {
        e.SuppressKeyPress = true;
    }

}

答案 1 :(得分:0)

我很快就把它搞砸了,所以你可能不得不修补它以使它工作,但它应该让你开始。

将表单的KeyPreview设置为true。放入KeyDown事件和KeyUp事件。

Keys MyKey;
bool KeyIsDown = false;
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
    if (KeyIsDown)
    {
        e.Handled = true;
    }
    else
    {
        MyKey = e.KeyData;
    }
}

private void Form1_KeyUp(object sender, KeyEventArgs e)
{
    if (KeyIsDown)
    {
        if (e.KeyData == MyKey)
        {
            KeyIsDown = false;
        }
    }
}