我填充这样的组合框:
foreach (Keys key in Enum.GetValues(typeof(Keys)))
{
comboKey.Items.Add(key);
}
之后,用户可以选择一个 MIDI 音符和一个键。演奏所选音符时应模拟该键。我试过了SendKeys.Wait
public void NoteOn(NoteOnMessage msg) //Is fired when a MIDI note us catched
{
AppendTextBox(msg.Note.ToString());
if (chkActive.Checked == true)
{
if (comboKey != null && comboNote != null)
{
Note selectedNote = Note.A0;
this.Invoke((MethodInvoker)delegate()
{
selectedNote = (Note)comboNote.SelectedItem;
});
if (msg.Note == selectedNote)
{
Keys selectedKey = Keys.A; //this is just so I can use the variable
this.Invoke((MethodInvoker)delegate()
{
selectedKey = (Keys)comboKey.SelectedItem;
});
SendKeys.SendWait(selectedKey.ToString());
}
}
}
}
但是例如,如果我在组合框中选择“空格”键并播放所需的音符,它不会产生空格,它只会写“空格”。而且我知道这可能是因为我写了selectedKey.ToString()
,那么正确的方法是什么?