我有一个标准的WinForms应用程序。我想实现这样的功能:
用户一次只能按住一个键盘按钮。如果他按下按钮,按下另一个按钮,则无法获得结果。
PS:此行为仅传播到我想要的表单,而不是所有形式的应用程序。
C#,2.0 - 3.5,VS 2008
答案 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;
}
}
}