2016-04-07 78 views
0

我有我的代碼的問題,我想在總金額總結後顯示更改,用戶從ComboBox中挑選一張鈔票,但我不確定我是否正在使用正確的事件處理程序/觸發器功能如果我應該做這些轉換。我得到的錯誤是:我應該使用哪種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( v = vs.110).aspx) –

+0

我試過了,但它不起作用,因爲它告訴我操作符''不能應用於類型'objects'和'double'的操作數 –

+0

'(Convert.ToDouble( comboBox1.SelectedItem)== total)'< - 注意parens。你的地方錯了。 –

回答

2

你應該在你if語句中使用ComboBox.SelectedItem物業,而不是SelectedIndexChanged事件。而且還可根據您的意見,您收到此錯誤:

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

你應該投第二個操作數double

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

啊,非常感謝你,先生。這就解決了:)只是最後一件事:當我嘗試從選定項中減去總數時,它告訴我運算符' - '的錯誤不能應用於'string'和'double'類型的操作數, –

+0

@CyanicWolf ...那麼你應該像這樣轉換爲你的字符串值的兩倍:'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()將更適合將字符串轉換爲雙倍,比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提供給我的代碼來避免使用其他變量嗎?感謝您的幫助 –

相關問題