我捕集KeyDown事件和我需要能够检查当前键是否按下是:控制 + + 中号


我知道我需要使用e.KeyDataKeyEventArgsKeys枚举和一些与枚举标志和位,但我不知道如何检查相结合。

有帮助吗?

解决方案

您需要使用修饰符的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)

这与正常的键检查组合会给你你寻求答案。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top