C#中字符串对e.KeyCode的值

时间:2014-08-01 06:33:18

标签: c# keycode

所以我在Visual Studio的C#Windows窗体应用程序中,我制作了一个声音程序,可以播放相应的声音#34; Hotkeys"由用户设置。我无法弄清楚如何让程序识别用户设置的热键。这可能听起来很模糊,所以让我告诉你。

好的,这是设置为从头开始运行的代码"双击设计菜单中的表单时编辑的内容"

    if (e.KeyCode == Keys.D)

    {
     // The Program plays sound
    }

所以我知道当我按下" d"在我的键盘上,声音播放。

好吧,当我输入我在其他地方的文本框中写的字符时,我希望播放声音。就像我打开我的程序一样," t"进入"设置热键"文本框,然后按t播放声音。

所以我希望程序能做这样的事情

    if (e.KeyCode == Keys.(textBox1.Text)) // textBox1 is my set hotkey box 

    {
     // The Program plays sound
    }

有什么方法可以让e.KeyCode识别textBox.Text吗? 我是否必须将textBox1.Text转换为键码值? 如果是这样,怎么样?

我是编码新手,所以试着向我解释一下,好像我是个假人:D

我真的很喜欢你的时间!

3 个答案:

答案 0 :(得分:4)

使用Enum.TryParse方法

Keys key;
if (Enum.TryParse<Keys>(textBox1.Text, out key))
{
    //Do something with key
    if (e.KeyCode == key)
    {

    }
}

如果您只关注1个字符,请尝试以下操作:

Keys key;
if (textBox1.TextLength > 0 && Enum.TryParse<Keys>(textBox1.Text[0].ToString(), out key))
{
    //Do something with key
    if (e.KeyCode == key)
    {

    }
}

答案 1 :(得分:0)

尝试将文本值解析为枚举。

if (e.KeyCode == Enum.Parse(typeof(Keys), textBox1.Text))
{
 // The Program plays sound
}

(伪代码,未遵守)

答案 2 :(得分:0)

您可以尝试在文本框中创建KeyDown event,并使用切换标记来区分不同的密钥

    private void textBox1_KeyDown(object sender, KeyEventArgs e)
    {
        Switch(e.Key)
             case e.Key == Key.D; PlaysondforD; break;
             case e.Key == Key.E; PlaysondforE; break;
             .........
    }