c#中字符串的值为e.KeyCode

本文关键字:KeyCode 字符串 | 更新日期: 2023-09-27 18:15:59

在Visual Studio中的c# Windows窗体应用程序中,我创建了一个音板程序,它根据用户设置的对应的"热键"播放声音。我有麻烦弄清楚如何让程序识别用户设置热键。这可能听起来很模糊,所以让我给你演示一下。

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

    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
    }

是否有办法我可以得到textBox。e.KeyCode可以识别的文本?我必须转换textBox1。文本到键代码值?如果有,是怎么做到的?

我刚开始编程,所以试着给我解释一下,好像我是一个傻瓜:D

我真的很感谢你的时间!

c#中字符串的值为e.KeyCode

使用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)
    {
    }
}

尝试将文本值解析为enum。

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

(伪代码,未编译)

您可以尝试在文本框中创建一个KeyDown事件,并使用switch语句来区分不同的键

    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;
             .........
    }