После вашего последнего редактирования я ожидаю, что фрагмент кода ниже может предоставить то, что вы хотите, или указать вам правильное направление.
public static int ReadLastKey()
{
int lastKey = -1;
for(;;)
{
ConsoleKeyInfo ki = Console.ReadKey();
if (ki.Key != ConsoleKey.Enter)
{
lastKey = (int)ki.KeyChar;
}
else
{
return lastKey;
}
}
}
Функция ReadLastKey считывает нажатия клавиш и возвращает последнюю нажатую клавишу при нажатии клавиши ввода.
Конечно, если вы не хотите, чтобы несколько нажатий клавиш записывались, вы можете удалить цикл и просто использовать Console.ReadKey дважды, один раз, чтобы получить нажатие клавиши, а затем второй раз, чтобы дождаться ввода.Или некоторая перестановка одного из них.
Вот простая версия функции, которая позволяет нажимать только одну клавишу, а затем ждать нажатия клавиши ввода.Обратите внимание, что это очень упрощенно, вы можете обрабатывать другие условия выхода и т. Д.
public static int ReadLastKey()
{
int lastKey = -1;
ConsoleKeyInfo ki;
// Read initial key press
ki = Console.ReadKey();
// If it is enter then return -1
if (ki.Key == ConsoleKey.Enter) return lastKey;
lastKey = (int)ki.KeyChar;
// Wait for the user to press enter before returning the last key presss,
// and do not display key the errant key presses.
do
{
ki = Console.ReadKey(true);
} while (ki.Key != ConsoleKey.Enter);
return lastKey;
}