e.keyChar не работает для Ctrl - PullRequest
0 голосов
/ 07 января 2011

Этот код показывает хэш-коды нажатой кнопки, но когда я нажимаю на кнопку управления, я ничего не делаю.Может ли кто-нибудь мне помочь?

 private void treeView1_KeyPress(object sender, KeyPressEventArgs e)
    {
       MessageBox.Show(e.KeyChar.GetHashCode().ToString());
    }

C # WinForms

1 Ответ

4 голосов
/ 07 января 2011

Ctrl - это клавиша-модификатор, поэтому она не генерирует события нажатия клавиши сама по себе.

Думайте о нажатии клавиши как о фактическом набранном символе (например, «A»).Напротив, клавиши-модификаторы (Ctrl, Alt и Shift) обычно ничего не «набирают», они работают вместе с другими клавишами, чтобы модифицировать их эффект (например, shift меняет «a» на «A»; ctrlчасто заменяет «a» на горячую клавишу для «Выбрать все», Alt может попытаться открыть главное меню (если есть), которое начинается с буквы «A»)

Чтобы использовать ctrl, вы обычно либо проверяете егосостояние в точке, где нажата обычная клавиша (например, когда нажата «A», чтобы определить, означает ли нажатие клавиши «A» или «ctrl + A»), или вы можете проверить состояние клавиши асинхронно (например, при перетаскивании, проверкеесли удерживать клавишу Ctrl, чтобы применить изменение к перетаскиванию, например, ограничить его перетаскиванием только по одной оси или скопировать перетаскиваемые файлы вместо их перемещения)

...