Ловля Ctrl + C в текстовом поле

У меня недостаточно представителей, чтобы поднять голос Тома, но он мне очень помог. Кроме того, вы должны выбрать ту же самую подрывную версию .NET Framework (кроме того, это тот же полный / основной / стандартный и т. Д.). Я указал 4.5 в тестовом проекте и получил эту ошибку, меняя ее на 4.6.1 (так же, как и другие), исправляет эту проблему.

16
задан Peter Mortensen 14 August 2012 в 22:32
поделиться

4 ответа

Используйте событие KeyDown, но в этом случае проверьте наличие как Ctrl , так и C , например:

if (e.Control && e.KeyCode == Keys.C) {
    //...
    e.SuppressKeyPress = true;
}

Кроме того, чтобы предотвратить обработку нажатия клавиши базовым TextBox, установите для свойства SuppressKeyPress значение true, как показано.

37
ответ дан 30 November 2019 в 15:28
поделиться

Ключевые события происходят в следующем порядке:

  1. KeyDown
  2. KeyPress
  3. KeyUp

Событие KeyPress не вызывается клавишами, не являющимися символами; однако клавиши без символов вызывают события KeyDown и KeyUp. Control - это не символьный ключ.

Вы можете проверить эту строку кода: если (e.KeyData == (Keys.Control | Keys.C))

6
ответ дан 30 November 2019 в 15:28
поделиться

Ой! Только что разобрался. Из трех возможных событий то, что я не пробовал, мне и нужно! Событие KeyUp является важным:

private void txtConsole_KeyUp(object sender, KeyEventArgs e)
{
    if (e.KeyData == (Keys.C | Keys.Control))
    {
        _consolePort.Write(new byte[] { 3 }, 0, 1);
        e.Handled = true;
    }
}
3
ответ дан 30 November 2019 в 15:28
поделиться

Попробуйте следующее: зафиксируйте события стрелка вверх и стрелка вниз . Когда вы обнаружите стрелку вниз для CTRL, установите флаг; когда вы обнаружите стрелку вверх , сбросьте флаг. Если вы обнаружите клавишу C , когда установлен флаг, у вас есть Ctrl + C .

Edit . Ой ... Ответ Джея определенно лучше. : -)

1
ответ дан 30 November 2019 в 15:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: