为可自定义的键盘快捷方式创建输入

时间:2011-11-30 14:36:52

标签: c# winforms visual-studio-2010 keyboard-shortcuts

我正在使用Visual Studio 2010来创建可视化C#应用程序,并且我想在我的应用程序的首选项中包含一些选项,以使用某种文本框输入自定义键盘快捷键。我理解如何记录键盘输入,以及如何将其保存到用户应用程序设置,但我找不到任何具有此功能的输入控件。

即。像这样的东西:

enter image description here

但是使用Windows窗体(注意:以上内容来自应用商店的Divvy for OS X)。

有没有内置功能来处理这个问题? 我可以使用任何好的库或自定义输入吗?

否则,有关如何实施此类内容的任何建议吗?

解决方案:

使用Bas B的答案和其他一些逻辑:

private void fShortcut_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode != Keys.Back)
    {
        Keys modifierKeys = e.Modifiers;
        Keys pressedKey = e.KeyData ^ modifierKeys; //remove modifier keys

        if (modifierKeys != Keys.None && pressedKey != Keys.None)
        {
            //do stuff with pressed and modifier keys
            var converter = new KeysConverter();
            fShortcut.Text = converter.ConvertToString(e.KeyData);
            //At this point, we know a one or more modifiers and another key were pressed
            //modifierKeys contains the modifiers
            //pressedKey contains the other pressed key
            //Do stuff with results here
        }
    }
    else
    {
        e.Handled = false;
        e.SuppressKeyPress = true;

        fShortcut.Text = "";
    }
}

以上是通过检查两个修改键和另一个键是否都被按下来判断输入有效快捷方式组合的方法。

1 个答案:

答案 0 :(得分:4)

您可以让用户在TextBox中输入首选快捷方式,然后处理KeyDown事件,例如:

    private void textBox1_KeyDown(object sender, KeyEventArgs e)
    {
        Keys modifierKeys = e.Modifiers;

        Keys pressedKey = e.KeyData ^ modifierKeys; //remove modifier keys

        //do stuff with pressed and modifier keys
        var converter = new KeysConverter();
        textBox1.Text = converter.ConvertToString(e.KeyData);
}

编辑:更新以包含Stecya的答案。