2016-10-10 1 views
-3

Ich habe diesen Code für gefundene Textbox1 größte Textbox2 Der Code funktioniert aber wenn ich "0" oder "0,5" mache gibt es einen Fehler (wenn es "," gibt).Textbox1 größte texbox2

Hat jemand eine Lösung für "0" oder ","?

public partial class MainWindow : Window 
{ 
    int point1, point2; 
    int point3, point4; 

    public MainWindow() 
    { 
     InitializeComponent(); 
     point1 = point2 = 0; 
     point3 = point4 = 0; 
    } 

    private void textBox1_TextChanged(object sender, TextChangedEventArgs e) 
    { 
     if (textBox1.Text != "") { 
     point1 = int.Parse(textBox1.Text); 
     int tt; 
     int uu; 
     tt = point1 - point2; 
     uu = point3 - point4; 
     if (tt >=uu) 
     texboxxol1.Background = Brushes.Yellow; 
     texboxxol2.Background = Brushes.White; 
     } 
    } 

    private void textBox2_TextChanged(object sender, TextChangedEventArgs e) 
    { 
     if (textBox2.Text != "") 
     { 
      point2 = int.Parse(textBox2.Text); 

      int tt; 
      int uu; 
      tt = point1 - point2; 
      uu = point2 - point1; 
      if (uu >= tt) 
      texboxxol2.Background = Brushes.White; 
      texboxxol1.Background = Brushes.Yellow; 
     } 
    } 
+3

well 0,5 ist keine ganze Zahl. Was würdest du erwarten/gerne? ... – Sayse

+0

wenn ich "0,5" oder nur "0" schreibe, habe ich die Meldung: Das Eingabeformat ist falsch. – realiste

+1

Das ist richtig. Eine Dezimalzahl ist keine ganze Zahl. Das ist kein Programmierproblem, das ist nur Mathe – Sayse

Antwort

1

vor allem, wenn Sie wollen in der Lage seine Nummer zu vergleichen wie 0,5 Sie einen anderen Datentyp als ganze Zahl verwenden müssen. float wäre ein guter Anfang. ist eine Tabelle mit allen eingebauten Datentypen von C#.

Zweitens: mit Schwimmer allein wird das Problem nicht lösen, weil Sie das TextChanged Ereignis der TextBox verwenden, die jedes Mal ausgelöst wird, der Benutzer eine einzelne Ziffer in die TextBox eintritt. Selbst wenn der Benutzer nur eine int wie 1234567890 eingibt, wird das Ereignis 10 mal ausgelöst.

Möglicherweise sollten Sie eine Schaltfläche oder die verwenden, damit der Code innerhalb Ihrer Ereignisse einmal ausgeführt werden kann, wenn die gesamte Zahl in TextBox eingegeben wird. Sie können auch das Ereignis KeyDown verwenden, damit der Benutzer die Eingabe durch Drücken der Eingabetaste bestätigen kann. Here ist ein Beitrag, der zeigt, wie man das macht.

+0

Thx zu Ihrer Information, Aber ich kann den Schlüssel nicht verwenden, weil, wenn ich einen Knopf drücke Es wird berechnet, dass von 0,5 + 0,5 gehen, die Ergebnisse steigen, die ganze Zeit. – realiste

+0

@realiste Ich sehe in Ihrem geposteten Code keinen Zusatz oder etwas, das hochzählt. Wenn Sie das Ereignis 'KeyDown' richtig verwenden, sollten Sie Ihr Problem lösen. Ihre Berechnung wird genau dann ausgeführt, wenn der Benutzer die EINGABETASTE drückt. Haben Sie vor, die Punkte jedes Mal zu vergleichen, wenn der Benutzer jede Nummer nacheinander eingibt? wie 123? um 1 um 2 um 3 Uhr? –

+0

ich verstehe und ich ändere meinen Code mit nur 1,2,3,4 ... thx zu Ihrer Information – realiste