我的代码存在这个问题,我希望在汇总总金额之后显示更改,并且用户从ComboBox
中选择一张钞票,但我不确定我是否正在使用正确的事件处理程序/触发器函数,如果我应该进行那些转换。我得到的错误是:
错误2事件' System.Windows.Forms.ComboBox.SelectedIndexChanged'只能出现在+ =或 - = 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 :(得分:2)
您应该在SelectedIndexChanged
语句中使用ComboBox.SelectedItem
属性而不是if
事件。并且根据您的评论,您会收到此错误:
运营商'&gt;'不能应用于'objects'和'double'类型的操作数
您应该将第二个操作数强制转换为double
:
if (Convert.ToDouble(comboBox1.SelectedItem) == (double) total)
{
lblChange.Text = "Amount Correct";
}
答案 1 :(得分:0)
if (Convert.ToDouble(comboBox1.SelectedValue) == (total.ToDouble()))
{
lblChange.Text = "Amount Correct";
}
答案 2 :(得分:0)
SelectedIndexChanged
是一个无法与变量total
进行比较的事件,假设变量的类型为double
,您需要在此处执行的操作是,您需要转换SelectedText / SelectedValue加倍然后进行比较。可能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";
}