2009-08-07 8 views
3

J'ai un formulaire avec un contrôle personnalisé. Supposons que le contrôle personnalisé a le focus. Si je montre une boîte de message de ce formulaire, lorsque la boîte de message est fermée en appuyant sur Entrée sur le bouton OK ou Annuler , la boîte de message est fermée, puis le contrôle personnalisé obtient un événement clavier (OnKeyUp) avec l'entrée clé.Entrée Touche non consommée par MessageBox, C#, Windows Forms

Cela ne se produit pas si la touche d'espace est utilisée pour "appuyer" sur le bouton OK ou Annuler. C'est comme si le MessageBox ne consomme pas la touche Entrée pour pour une raison quelconque. J'ai essayé ceci avec la propriété KeyPreview du formulaire activée, mais il n'y avait aucune différence.

Est-ce que quelqu'un sait comment arrêter ce message après qu'il est utilisé pour appuyer sur le bouton MessageBox?

+0

Merci pour les réponses. Oui, je pourrais l'ignorer mais la plupart du temps j'ai besoin de cet événement. La solution s'est avérée utiliser OnKeyDown ou OnKeyPressed au lieu de OnKeyUp, car les deux événements précédents sont consommés par la boîte de message. – NXT

Répondre

3

Ne pouvez-vous l'ignorer dans le code? Cette syntaxe est VB:

Private Sub frmEdit_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyUp 
    If e.KeyCode = Keys.Enter Then 
     e.Handled = True 
    End If 
End Sub 
2

Je l'ai fait une conversion brute de VB.NET en C# pour vous, j'espère que cela aide.

private void frmEdit_KeyUp(ByVal object sender, KeyEventArgs e) 
{ 
    if(e.KeyCode == Keys.Enter) 
     { 
     e.Handled = true; 
     } 
    else Application.DoEvents(); 
}