Cómo usar KeyPressEvent de manera correcta

Intento crear HotKeys para mis formularios

código

private void FormMain_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyChar == (char)Keys.Enter) { MessageBox.Show("e"); } } 

funciona para una tecla, pero si quiero usar una combinación de teclas como CTRL + N, intente usar if (e.KeyChar == (char)Keys.Enter && e.KeyChar == (char)Keys.N) – pero no funciona. Estoy en lo cierto: ¿utilizando dicho código para la combinación de teclas?

EDITAR

Editar

Este código solo captura la primera tecla presionada, pero no la combinación; por lo tanto, si presiono CTRL + Intro: captura el código CTRL pero no la tecla Intro, intente crear adicional if pero el resultado es el mismo …


Cambie el evento de KeyPress a KeyDown – ahora es trabajo

Para otras combinaciones de Control y otra letra, hay algo interesante que, el e.KeyChar tendrá un código diferente. Por ejemplo, normalmente e.KeyChar = 'a' tendrá un código de 97 , pero al presionar Control antes de presionar a (o A ), el código real es 1 . Así que tenemos este código para tratar con otras combinaciones:

 private void FormMain_KeyPress(object sender, KeyPressEventArgs e) { //Pressing Control + N if(e.KeyChar == 'n'-96) MessageBox.Show("e"); //Using this way won't help us differentiate the Enter key (10) and the J letter } 

También puede utilizar el evento KeyDown para este propósito. (De hecho, KeyDown es más adecuado). Porque es compatible con KeyData que contiene la información de combinación de claves modificadoras y otra clave literal:

 private void FormMain_KeyDown(object sender, KeyEventArgs e){ //Pressing Control + N if(e.KeyData == (Keys.Control | Keys.N)) MessageBox.Show("e"); } 

prueba esto para la combinación de Ctrl + N ,

 if (e.Modifiers == Keys.Control && e.KeyCode == Keys.N) { MessageBox.Show("e"); }