Во-первых, вам нужно сохранить доступные комбинации:
static char[] num1 = { 'A', 'B', 'C', '1' };
static char[] num2 = { 'D', 'E', 'F', '2' };
// etc...
А затем мы составим словарь комбинаций, сопоставленных с правым ключевым символом, который их производит:
Dictionary<char, char[]> map = new Dictionary<char, char[]>()
{
{'1', num1},
{'2', num2}
};
Некоторые переменные для отслеживания:
char[] curr = null;
char currChar = '-';
int index = 0;
Функция печати:
void Print()
{
Console.WriteLine(curr[index]);
}
И логика:
private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
if (map.ContainsKey(e.KeyChar))
{
if (curr == null || e.KeyChar != currChar)
{
curr = map[e.KeyChar];
index = 0;
currChar = e.KeyChar;
Print();
}
else
{
++index;
if (index == curr.Length)
index = 0;
Print();
}
}
}
Логика в основном проверяет, чтобы убедиться, что нашиКарта ключей содержит код ключа, о котором идет речь.Если мы ничего не отслеживаем или если оно отличается от того, которое мы отслеживаем в настоящее время, используйте эту конкретную карту и первый индекс.
В противном случае, если это повторное нажатие клавиши, увеличьте индекс (возвращаясь к началу, если мы пройдем конец).