2016-04-07 5 views
0

Ich habe dieses Problem mit meinem Code, wo ich die Änderung anzeigen möchte, nachdem der Gesamtbetrag summiert ist und der Benutzer eine Banknote aus der ComboBox wählt, aber ich bin mir nicht sicher, ob ich die richtige Ereignishandler/Trigger-Funktion verwende und wenn ich diese Konvertierungen machen sollte. Der Fehler Ich erhalte ist:Welcher ComboBox-Ereignishandler sollte ich verwenden?

Error 2 The event 'System.Windows.Forms.ComboBox.SelectedIndexChanged' can only appear on the left hand side of += or -= J:\EDPtest1\EDPtest1\Form1.cs 100 49 EDPtest1

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    if (Convert.ToDouble(comboBox1.SelectedIndexChanged == total)) 
    { 
     lblChange.Text = "Amount Correct"; 
    } 
    else if (Convert.ToDouble(comboBox1.SelectedIndexChanged > total)) 
    { 
     lblChange.Text = "Total change: " + comboBox1.SelectedIndexChanged - total; 
    } 
    else if(Convert.ToDouble(comboBox1.SelectedIndexChanged < total)) 
    { 
     lblChange.Text = "Please add more money"; 
    } 
} 
+0

[ComboBox.SelectedItem Property] (https://msdn.microsoft.com/en-us/library/system.windows.forms.combobox.selecteditem (v = vs.110) .aspx) –

+0

Ich habe das versucht, aber es funktioniert nicht, da es mir sagt, dass die Operatoren '>' nicht auf Operanden vom Typ 'objects' und 'double' angewendet werden können. –

+0

'(Convert.ToDouble (comboBox1.SelectedItem) == total) '<- Beachten Sie Parens. Dein ist an der falschen Stelle. –

Antwort

2

Sie ComboBox.SelectedItemProperty statt verwenden sollten SelectedIndexChangedEreignis in Ihren if Aussagen. Und auch auf der Grundlage Ihren Kommentar, dass Sie diese Fehlermeldung erhalten:

The operators '>' cannot be applied to operands of type 'objects' and 'double'

Sie sollten zweite Operanden zu gieße double:

if (Convert.ToDouble(comboBox1.SelectedItem) == (double) total) 
{ 
    lblChange.Text = "Amount Correct"; 
} 
+0

Ah ja vielen Dank Herr. Das hat ganz gut geklappt :) Nur noch eine letzte Sache: wenn ich versuche, die Summe von dem ausgewählten Element zu subtrahieren, sagt es mir, dass der Fehler Operator '-' nicht auf Operanden vom Typ 'string' und 'double' angewendet werden kann –

+0

@CyanicWolf ... Nun sollten Sie konvertieren, um Ihren String-Wert wie folgt zu verdoppeln: 'Double.Parse (yourstringvalue)'. –

+0

Danke sir :) –

0
if (Convert.ToDouble(comboBox1.SelectedValue) == (total.ToDouble())) 
{ 
    lblChange.Text = "Amount Correct"; 
} 
+0

danke. Dies funktioniert auch für mich :) –

0

SelectedIndexChanged ist ein Ereignis, das Sie mit einer Variablen nicht zu vergleichen, dass total übernehmen dass die Variable vom Typ double ist, was Sie hier tun müssen, ist, müssen Sie den SelectedText/SelectedValue zu double konvertieren und dann den Vergleich durchführen. Wahrscheinlich double.TryParse() wird besser geeignet für die Umwandlung von String zu Doppel, als Convert.ToDouble(). Ich habe alle diese Punkte im Snippet unten enthalten:

double input; 
if (double.TryParse(comboBox1.SelectedText, out input)) // can use comboBox1.SelectedValue also if you are binding the values 
    { 
    if (input == total) 
    { 
     lblChange.Text = "Amount Correct"; 
    } 
    else if (input > total) 
    { 
     lblChange.Text = "Total change: " + (input - total); 
    } 
    else if (input < total) 
    { 
     lblChange.Text = "Please add more money"; 
    } 
    } 
    else 
    { 
     lblChange.Text = "Please add more money"; 
    } 
+0

Ich bin noch ein Anfänger im Codieren, aber ist es nicht möglich, die Verwendung einer anderen Variablen zu vermeiden, indem ich den Code benutze, den S.Akbari mir gegeben hat? Danke für die Hilfe –

Verwandte Themen