2016-04-07 80 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提供给我的代码来避免使用其他变量吗?感谢您的帮助 –

相关问题