Используйте это:
if (e.KeyCode == (Keys)neededLetter[0])
Возможно, вы должны сделать нужное письмо типа char
, чтобы вы могли использовать:
if (e.KeyCode == (Keys)neededLetter)
А еще лучше, просто сделайте нужную букву типа Keys
, чтобы вы могли просто сделать это:
if (e.KeyCode == neededLetter)
{
if (neededLetter == Keys.N)
neededLetter = Keys.O;
else if (neededLetter == Keys.O)
neededLetter = Keys.T;
...
}
@ Sergio, re: ввод только одним ключом:
Да, он принимает только один ввод с клавиатуры. На самом деле, если вы хотите интерпретировать комбинации клавиш, такие как Ctrl + A , вы не можете поймать их обоих одновременно в e.KeyCode, только последнюю нажатую клавишу (обычная клавиша или иное ( ключевые модификаторы)) регистрируется в e.KeyCode. Если нет булевых свойств модификатора ключа, таких как e.Control, e.Shift, e.Alt, мы не сможем читать сочетания клавиш, и нам придется свернуть нашу собственную процедуру для установки переменной состояния и определения, если эти клавиатуры модификаторы остаются / остаются у пользователя. Но, к счастью, есть встроенное свойство, которое указывает, что модификаторы все еще удерживаются пользователем, поэтому мы можем сделать это:
if (e.KeyCode == Keys.A && e.Control)
MessageBox.Show("Test");
И чтобы проверить, что e.KeyCode регистрирует только последний ключ, независимо от того, является ли он ключом ( A ) или модификатором ключа ( Ctrl ). Попробуйте удерживать A (не отпускать), затем нажмите Ctrl , на экране появится слово «Test» not , последнее нажатие ( Ctrl ) также зарегистрирован на e.KeyCode. Но если вы будете удерживать Ctrl , тогда A , на экране появится слово «Тест», e.Control - это состояние, которое указывает, является ли Ctrl все еще удерживается пользователем.