J'ai le code suivant qui ne montre pas le MessageBox lorsque vous appuyez sur Entrée/Retour.
Pour toute autre clé (lettres ou chiffres), la MessageBox indique False.
private void cbServer_TextChanged(object sender, EventArgs e)
{
if (enterPressed)
{
MessageBox.Show("Enter pressed");
}
else
MessageBox.Show("False");
}
private void cbServer_Keydown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter || e.KeyCode == Keys.Return)
{
enterPressed = true;
MessageBox.Show("Enter presssed: " + enterPressed);
}
else
enterPressed = false;
}
Des idées?
EDIT: Au-dessus du code, je pensais que le problème était avec le _Keydown même si je ne l'ai posté que.
C'est parce que lorsque vous appuyez sur Enter TextChanged
event ne sera pas déclenché.
dans votre classe de concepteur de formulaire (formname.designer.cs), ajoutez ceci:
this.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.Login_KeyPress);
et ajoutez ce code au code de l’épine dorsale (formname.cs):
void Login_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)13)
MessageBox.Show("ENTER has been pressed!");
else if (e.KeyChar == (char)27)
this.Close();
}
private void textBox_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
MessageBox.Show("Enter key pressed");
}
else if (e.Key == Key.Space)
{
MessageBox.Show("Space key pressed");
}
}
Utilisez l'événement PreviewKeyDown pour détecter toute clé avant d'être affichée dans une zone de texte ou une entrée