2010-05-21 16 views
2

Lorsque l'utilisateur entre une valeur supérieure à numericUpDown.Maximum, la valeur du contrôle est automatiquement définie sur le maximum. Je voudrais afficher un MessageBox lorsque cela se produit, mais je ne suis pas en mesure de le faire parce que control.Value et control.Text contiennent déjà la valeur définie automatiquement, au maximum, lorsque l'événement Validating est déclenché.Récupération de la valeur "non valide" d'un événement de validation NumericUpDown

private void numericUpDown_Validating(object sender, System.ComponentModel.CancelEventArgs e) 
{ 
     NumericUpDown control = sender as NumericUpDown; 
     decimal newValue = control.Value; 

     // decimal newValue; 
     // decimal.TryParse(control.Text, out newValue) 

     if (newValue > control.Maximum || newValue < control.Minimum) 
     { 
      // MessageBox 

     } 

} 

Merci

+0

Cela peut être utile: http://stackoverflow.com/q/3021677/279982 – atoMerz

Répondre

3

Nagging l'utilisateur par gifler avec des boîtes de message ne rend pas la plus grande interface utilisateur. Mais vous pouvez facilement le faire en définissant min et max plus petit/plus grand et en vérifiant la valeur dans l'événement ValueChanged.

+0

Suggérez-vous que la valeur est modifiée sans notification? Je suis d'accord que les boîtes de message peuvent être ennuyantes. Mais utiliser ASP.NET comme des contrôles de validation peut être à la fois plus informatif et moins ennuyeux. – atoMerz

+0

Non. Cette question n'a rien à voir avec asp.net –

+0

Contrôles de validation "ASP.NET like", je veux dire la méthode utilisée ici pas les contrôles eux-mêmes. La mise en œuvre est possible et a été discutée dans le lien dans mon commentaire sur la question. – atoMerz