2016-04-07 6 views
0

合計金額が合計され、ユーザーがComboBoxから銀行券を選択した後に変更を表示したいコードにこの問題がありますが、正しいイベントハンドラ/トリガ機能を使用しているかどうかわかりませんもし私がそれらの変換を行う必要があります。私は取得していますエラーがある:あなたのif文でComboBox.SelectedItem財産の代わりSelectedIndexChangedイベントを使用する必要があります私はどのComboBoxイベントハンドラを使用しますか?

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プロパティ](https://msdn.microsoft.com/en-us/library/system.windows.forms.combobox.selecteditem:私は以下のスニペット内のすべてのこれらの点が含まれています私はそれを試みましたが、演算子> ''を 'objects'と 'double'型のオペランドに適用できないことを伝えて以来、動作しません。 –

+0

comboBox1.SelectedItem)==合計) '< - 通知は無効です。あなたは間違った場所にいる。 –

+0

'(Convert.ToDouble(v = vs.110).aspx) –

答えて

2

。そしてまた、このエラーが発生したことをあなたのコメントに基づいて:

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

あなたはdoubleに2つ目のオペランドをキャストする必要があります

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

を確認することができますああ、ありがとうございました。これはうまくいきました:)最後の一点:選択した項目から合計を引いたときにエラーオペレータ ' - 'は 'string'型と 'double'型のオペランドに適用できません。 –

+0

@CyanicWolf ...まあ、このように文字列の値をdoubleに変換する必要があります: 'Double.Parse(yourstringvalue)'。 –

+0

ありがとうございます:) –

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

ありがとうございます。これも私のために働いた:) –

0

SelectedIndexChangedは、変数totalとそれを比較することはできませんイベントであると仮定変数のタイプがdoubleの場合は、ここで行う必要があるのは、SelectedText/SelectedValueをdoubleに変換してから比較を行う必要があるということです。恐らくdouble.TryParse()は、文字列をdoubleに変換するのに、Convert.ToDouble()より適しているでしょう。 (

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

まだ初心者のコーディングではありませんが、S.Akbariが私に提供したコードを使用して別の変数を使用することを避けることは可能ですか?助けてくれてありがとう –