C#:入门从KeyEventArgs' KEYDATA按下正确的键
-
21-08-2019 - |
题
我捕集KeyDown
事件和我需要能够检查当前键是否按下是:控制 + 移 + 中号
我知道我需要使用e.KeyData
从KeyEventArgs
的Keys
枚举和一些与枚举标志和位,但我不知道如何检查相结合。
解决方案
您需要使用修饰符的KeyEventArgs类的属性。
是这样的:
//asumming e is of type KeyEventArgs (such as it is
// on a KeyDown event handler
// ..
bool ctrlShiftM; //will be true if the combination Ctrl + Shift + M is pressed, false otherwise
ctrlShiftM = ((e.KeyCode == Keys.M) && // test for M pressed
((e.Modifiers & Keys.Shift) != 0) && // test for Shift modifier
((e.Modifiers & Keys.Control) != 0)); // test for Ctrl modifier
if (ctrlShiftM == true)
{
Console.WriteLine("[Ctrl] + [Shift] + M was pressed");
}
其他提示
我认为它最容易使用的:
if(e.KeyData == (Keys.Control | Keys.G))
您可以检查使用类似于以下的技术:
if(Control.ModifierKeys == Keys.Control && Control.ModifierKeys == Keys.Shift)
这与正常的键检查组合会给你你寻求答案。
不隶属于 StackOverflow