2011-01-06 3 views
0

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

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

C# WinForms

+1

http://stackoverflow.com/questio ns/1367700 –

+0

Возможный дубликат [В чем разница между KeyDown и KeyPress в .NET?] (http://stackoverflow.com/questions/1367700/whats-the-difference-between-keydown-and-keypress-in-net) – Femaref

+0

Используйте e.KeyData, если вы хотите также увидеть ключи-модификаторы. –

ответ

4

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

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

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