我应该使用哪个ComboBox事件处理程序?

时间:2016-04-07 17:02:31

标签: c# winforms combobox

我的代码存在这个问题,我希望在汇总总金额之后显示更改,并且用户从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";
    }
}

3 个答案:

答案 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";
  }