Как конвертировать нажатую клавишу в int в C# - PullRequest
0 голосов
/ 03 марта 2020

Я хочу преобразовать нажатую клавишу в int и ввести переменную int. Я пытаюсь нажать клавишу и преобразовать в int, чтобы использовать его для изменения текста или установки этого текста.

Например, при событии нажатия клавиши textbox я пробовал это, но обычно он получает D1 или D2 или ... когда я нажимаю цифровые клавиши и не работает:

private void txtNumberOfPositions_KeyDown(object sender, KeyEventArgs e)
{
      char PressedKeyForSettingNumberOfPositionsChar = (char)e.KeyCode;

      int PressedKeyForSettingNumberOfPositionsInt = Convert.ToInt32(PressedKeyForSettingNumberOfPositionsChar);

      if (PressedKeyForSettingNumberOfPositionsInt >= 0 && PressedKeyForSettingNumberOfPositionsInt <= 10)
         txtNumberOfPositions.Text = PressedKeyForSettingNumberOfPositionsInt.ToString();
}

1 Ответ

2 голосов
/ 03 марта 2020

Я предлагаю использовать комбинацию событий KeyDown и KeyPress. Для всех простых клавиш (исключая Ctrl, Shift и т. Д. c) событие KeyPress даст вам самого персонажа и тогда не нужно будет его преобразовывать. Пример:

private void txInterval_KeyPress(object sender, KeyPressEventArgs e)
        {
            char c = e.KeyChar;
        }

Здесь e.KeyChar даст вам 2, когда вы нажмете цифру 2, а не D2, например. Вы можете использовать KeyDown для записи клавиш для Ctrl, Alt и Shift и т. Д. c. Приложение будет вызывать как KeyDown, так и KeyPress, когда вы нажимаете цифру c или алфавит, например. Это просто делает ваш код очень простым, вместо проверки IF на D0, D1 ... D9. И поскольку KeyChar выдаст вам самого персонажа, вы можете легко проверить, является ли он цифрой c или алфавитом, если вам нужно преобразовать это далее.

Надеюсь, это поможет.

...