2016-04-07 25 views
0

Toplam tutar toplanır ve kullanıcı ComboBox'dan bir banknot seçtikten sonra değişikliği görüntülemek istediğim kodumu kullanarak bu sorunu yaşıyorum ancak doğru olay işleyici/tetikleyici işlevini kullanıp kullanmadığımı bilmiyorum ve eğer bu dönüşümleri yapmalıyım. Ben alıyorum hatadır: Eğer if tablolara ComboBox.SelectedItemMülkiyet yerine SelectedIndexChangedolay kullanmalıdırHangi ComboBox olay işleyicisini kullanmalıyım?

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 Mülkiyet] (https://msdn.microsoft.com/en-us/library/system.windows.forms.combobox.selecteditem: Aşağıda snippet'te tüm bu noktaları dahil ettik v = vs.110) .aspx) –

+0

Bunu denedim, ancak işlevin '>' 'nesneler' ve 'çift' türünde 'çift' –

+0

'(Convert.ToDouble (comboBox1.SelectedItem) == total) '<- Bildiri parens. Seninki yanlış yerdesiniz. –

cevap

2

.

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

Sen double ikinci işlenen kullanması gereklidir:

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

Ah'yi kontrol edebilirsiniz. Evet, çok teşekkürler efendim. Bu sadece iyi bir şeydi :) Sadece son bir şey: Seçilen öğeden toplamı çıkarmaya çalıştığımda, hata Operatör '-' 'string' ve 'double' türünde işlenenlere uygulanamadığını söyler. –

+0

@CyanicWolf ... Dize değerinizi şöyle ikiye dönüştürmelisiniz: Double.Parse (yourstringvalue) '. –

+0

Teşekkür ederim bayım :) –

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

teşekkürler. Bu benim için de işe yaradı :) –

0

SelectedIndexChanged bir değişkene sahip varsayalım total karşılaştırmak olamaz bir olaydır Ve ayrıca bu hatayı senin yorumun dayalı değişkenin double türünde olduğunu, burada yapmanız gereken şey, SelectedText/SelectedValue değerini ikiye dönüştürmeli ve sonra karşılaştırmayı yapmalısınız. Muhtemelen double.TryParse(), Convert.ToDouble()'dan dize dönüştürmek için daha uygun olacaktır. (

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

Hala kodlamaya yeni başlayan biriyim, fakat S.Akbari'nin bana sağladığı kodu kullanarak başka bir değişken kullanmaktan kaçınmak mümkün değil mi? Yardım için teşekkürler –

İlgili konular