所以我在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
我真的很喜欢你的时间!
答案 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;
.........
}