Как обнаружить Ctrl - косая черта в приложении WinForm

Ниже приведен код для Ctrl + F (из другого поста SO). Но как определить Ctrl + ForwardSlash? или Ctrl + / (примечание: деление не работает)

    protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
    {
        if (1 == 1) //keyData == (Keys.Control | Keys.F))
        {
            MessageBox.Show("What the Ctrl+F?");
            return true;
        }
        return base.ProcessCmdKey(ref msg, keyData);
    }

person BuddyJoe    schedule 04.09.2009    source источник
comment
Модификатор Control заставляет его хотеть «Вопрос» вместо «Разделить» — по крайней мере, на клавиатурах США.   -  person Reed Copsey    schedule 04.09.2009


Ответы (1)


Разделение должно работать нормально.

Для Ctrl + \:

if (keyData == (Keys.Control | Keys.OemPipe) )

Для Ctrl + /:

if (keyData == (Keys.Control | Keys.OemQuestion) )

По какой-то причине (не знаю почему), когда вы перехватываете Ctrl + эти клавиши, они сопоставляются со «сдвинутыми» сопоставлениями клавиш.


Редактировать:

Один трюк для нахождения этого или любого другого ключа. Установите точку останова в любой строке этого метода и посмотрите на значение keyData при нажатии клавиши, которую вы пытаетесь перехватить. Я рекомендую делать это, не нажимая кнопку управления. Затем вы можете использовать рефлектор, чтобы получить все конкретные значения для Keys и найти «ключ» с соответствующим значением.

person Reed Copsey    schedule 04.09.2009
comment
не работал для меня. примечание: я говорю о входе / выше или рядом с ним. Не на цифровой клавиатуре (если вы на ноутбуке). Любой простой способ захватить фактические коды клавиш в окне сообщений, а затем просто переписать, используя числовые коды? - person BuddyJoe; 04.09.2009
comment
@Tyndall: я только что проверил это. Мой новый ответ даст вам правильный ответ. - person Reed Copsey; 04.09.2009
comment
На моей клавиатуре обратная косая черта находится над вводом. - person recursive; 04.09.2009
comment
@рекурсивный. На моем тоже есть. - person Reed Copsey; 04.09.2009
comment
извините, я имел в виду / ниже и слева от ввода? ключ. Интересно, почему / карты смещаются при нажатом Ctrl. Похоже на ошибку. Я играю с этим больше. Может просто попросить пользователей использовать F12, если я не смогу сделать это надежным для настольных компьютеров и ноутбуков моей корпорации (модели 7 или 8). - person BuddyJoe; 06.09.2009
comment
Это довольно старый пост, но для потомков я нашел подробное объяснение различных подходов к захвату ключей в этом сообщение SO - person Memetican; 28.07.2017