2016-04-05 3 views
1

Ich versuche, eine Multiplikation von drei verschiedenen Werten (drei verschiedene Textfelder) durchzuführen. Der Code wird zur Schaltfläche hinzugefügt. Wenn der Benutzer darauf klickt, berechnet er alle drei Werte.Versuchen, Multiplikation von drei Textfeldern in Visual Studio

Ich habe einen Code, wenn ich es debugge, es zeigt keine Fehler, aber es berechnet nicht und es wird nicht das Ergebnis in der Textbox anzeigen "total".

Hier ist der Code:

private void button1_Click(object sender, EventArgs e) 
    { 
     Int32 val1 = Convert.ToInt32(amount.Text); 
     Int32 val2 = Convert.ToInt32(length.Text); 
     Int32 val3 = Convert.ToInt32(width.Text); 
     Int32 val4 = val1 * val2 * val3; 
     total.Text = Convert.ToString(val4); 
    } 

Vielen Dank für Ihre Hilfe im Voraus.

+2

haben Sie gesetzt Breakpoints und andere grundlegende Debugging, um sicherzustellen, dass Ihre Methode sogar getroffen wird? – Kritner

Antwort

1

Es ist nicht notwendig, die Int32-Klasse zu verwenden, verwenden Sie int, da es viel einfacher zu lesen und standardisierter ist.

Dies könnte auch mit dem arithmetischen helfen, die wie dieser

int val1 = int.Parse(amount.Text); 
int val2 = int.Parse(length.Text); 
int val3 = int.Parse(width.Text); 
int val4 = val1 * val2 * val3; 
total.Text = val4.ToString(); 

Dies wird unter der Annahme, sein sollte, dass die Textfelder nur Eingabe von Zahlen in sie haben können, wenn dies nicht der Fall ist, dann können Sie TryParse anstelle .

int val1 = 0; 
int val2 = 0; 
int val3 = 0; 
int val1 = if(!int.TryParse(amount.Text, out val1)) return; // could show MessageBox 
int val2 = if(!int.TryParse(length.Text, out val2)) return; // could show MessageBox 
int val3 = if(!int.TryParse(width.Text, out val3)) return; // could show MessageBox 
int val4 = val1 * val2 * val3; 
total.Text = val4.ToString(); 
+0

Int.Parse schlägt fehl, wenn jemand eine Zeichenfolge anstelle einer Zahl eingibt. Übrigens, warum sollte dieser Code ein anderes Ergebnis als das OP geben? – Steve

+0

Diese Methode sollte das nicht behandeln, die textBoxes sollten stattdessen die Dateneingabe verarbeiten. –

+0

Danke, das hat sehr geholfen – Truex

4

Sie tatsächlich benötigen, um die String-Werte in Ihrem Textboxsteuerelemente als ganze Zahlen zu analysieren, so dass Sie Ihre notwendigen Operationen mit ihnen durchführen können.

Im Allgemeinen ist die sicherste Methode sein wird, die Int32.TryParse() Methode zu verwenden, das eine Bedingung, die anzeigt, ob das Parsen erfolgreich zurück war, und es wird den neu analysierten Wert in einer bestimmten Variablen speichern:

private void button1_Click(object sender, EventArgs e) 
{ 
    // Define your variables 
    int amount, length, width; 

    if(!Int32.TryParse(amount.Text, out amount)) 
    { 
     // Amount was not an integer, do something here 
    } 

    if(!Int32.TryParse(length.Text, out length)) 
    { 
     // Length was not an integer, do something here 
    } 

    if(!Int32.TryParse(width.Text, out width)) 
    { 
     // Width was not an integer, do something here 
    } 

    // At this point, you can calculate your result 
    total.Text = Convert.ToString(length * width * amount); 
} 
Verwandte Themen