C # WinForms. Получить все данные клавиатуры - PullRequest
0 голосов
/ 09 ноября 2018

Это должно быть намного проще, чем он боролся с этим в течение некоторого времени. Я хочу записывать нажатия клавиш в форме Windows. Я должен быть в состоянии обнаружить все символы ASCII и ли нажата клавиша Shift, Alt или управления. Я пробовал обычное событие нажатия клавиш, событие нажатия клавиш, но ни один из них не дал вам всех символов. Например, событие keydown отлично подходит для получения функциональных клавиш, сдвинутых символов, но оно не может получить символы, такие как + или - Или может это? Поэтому я попробовал следующее:

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
    if (keyData == (Keys.Control | Keys.A))
    {
        MessageBox.Show("You pressed Ctrl+A!");

        return true;
    }

    return false;
}

Отлично. Это позволяет мне получить любой ключ, который находится в списке параметров, которые предоставляет «Ключи». Но это не включает такие символы, как # + - и так далее. В отладчике большинство клавиш отображаются, но не +, [и т. Д., Они показывают, что нажаты несколько клавиш, и они не имеют смысла. Так в чем же решение? Спасибо

1 Ответ

0 голосов
/ 09 ноября 2018

А как насчет этого? Если вы нажмете две клавиши вместе, ваше событие KeyData должно показать вам обе клавиши, которые были нажаты. Используйте Свойства событий в Windows Forms и выберите KeyDown.

private void Form1_KeyDown(object sender, KeyEventArgs e)
{
    MessageBox.Show("Keys Pressed: " + e.KeyData.Tostring());
}

Plus and Shift together Ctrl and Shift together

...