为什么这个If语句没有执行?

时间:2009-12-02 00:17:29

标签: c# .net winforms

背景

我有一个包含以下项目的Windows窗体:

  • ComboBox
  • TextBox
  • 两个Buttons:前进和后退
  • 一个班级 - Items,其中包含string intdouble成员

if (ComboBox1.SelectedIndex == 2 && Items[index].Price > 50.00 )
{
     txtManu.Text = Items[index].Manu;
     txtPrice.Text = Convert.ToString(Items[index].Price);
}

当我点击表单上的forward按钮时,我希望所有超过50.00的价格都显示在txtPrice.Text文本框中,但它会显示所有价格。

转发按钮代码段:

else if (comboBox1.SelectedIndex == 2 && Items[index].Price > 50.00)
{
    index += 1;
    if (index == Items.Length) index = 0;

    txtManu.Text = Items[index].Manu;
}

ComboBoxindex[0]index[1]项:ComboBox1.SelectedIndex == 0ComboBox1.SelectedIndex == 1

转发按钮也有索引0和索引1项:if (comboBox1.SelectedIndex == 0)if (comboBox1.SelectedIndex == 1)

为什么if语句没有执行?

更新

以下是该示例的改进代码:

Items[0] = new items("Car", 30.00);
Items[1] = new itemss("Cat", 55.00);
Items[2] = new items("Cookie", 59.00);

ComboBox代码段

if (ComboBox1.SelectedIndex == 0 && Items[index].Price > 50.00 )
{ 
    txtPrice.Text = Convert.ToString(Items[index].Price);
} 

###Forward Button
//single combobox
if (comboBox1.SelectedIndex == 2 && Items[index].Price > 50.00)
{
    index += 1;
}

if (index == Items.Length)
{
    index = 0;
}
txtPrice.Text = Convert.ToString(Items[index].Price);

2 个答案:

答案 0 :(得分:3)

您是否已使用调试器逐步检查?我认为在if之前发生了一个IndexOutBounds异常。我可能会尝试捕获该块,看看你是否在那里获得例外。

答案 1 :(得分:0)

看起来您可能过早地增加该索引。您检查Items[index]的值,但在使用Items[index]中的值之前增加索引。所以你实现了:Items[index+1]

但总的来说,我对你的问题很困惑。您可以发布更多代码和更详细的解释吗?