2016-09-12 2 views
-1

Ich erstelle ein Windows-Formular-Programm für Klasse und ich versuche, die Eingabe für ein 'Gewicht' Textfeld von 1-1000 zu begrenzen. Ich habe die Benutzereingabe, um zu einem Doppelklick zu analysieren, aber aus irgendeinem Grund wird die Fehlermeldung, die ich erstellt habe, zur richtigen Zeit nicht wie beabsichtigt eingeblendet. (Die Fehlermeldung wird nur Popup, wenn ich Ziffern eingeben 5 Ziffern übergeben ... so kann ich ohne einen Fehler 2222 oder 10000 eingeben)Windows Form. Benutzereingaben auf einen bestimmten Bereich beschränken

private void Weight_KeyPress(object sender, KeyPressEventArgs e) 
{ 
var sourceValue = Weight.Text; 
double doubleValue; 
if (double.TryParse(sourceValue, out doubleValue)) 
{ 
    if (doubleValue > 1000) 
    { 
     MessageBox.Show("Cannot be greater than 1000"); 
    } 
} 
} 
+1

Warum Sie keine Verwendung [NumericUpDown] (https://msdn.microsoft.com/en-us/library/system.windows.forms.numericupdown (v = vs.110) .aspx) Kontrolle für diese Aufgabe? – Steve

+0

Danke für die Antwort. Mein Lehrer verlangt von mir, Benutzereingaben zu verwenden. –

+0

Können Sie erklären, in welchem ​​Fall nennen Sie diesen Code? – Steve

Antwort

0

statt KeyPress verwenden Sie Textchanged-Ereignis verwenden sollten , denn wenn man keypress verwenden Das neue Zeichen ist noch nicht Teil des Steuertextes.

private void inputTextBox_TextChanged(object sender, EventArgs e) 
     { 
      var inputTextBox = sender as TextBox; 
      var sourceValue = inputTextBox.Text; 
      double doubleValue; 
      if (double.TryParse(sourceValue, out doubleValue)) 
      { 
       if (doubleValue > 1000) 
       { 
        MessageBox.Show("Cannot be greater than 1000"); 
       } 
      } 
     } 
Verwandte Themen