Почему это не выполняется Заявление? - PullRequest
1 голос
/ 02 декабря 2009

Фон

У меня есть форма Windows со следующими элементами:

  • ComboBox
  • TextBox
  • Два Buttons: вперед и назад
  • A класс - Items, который содержит string int и double членов

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;
}

У ComboBox есть index[0] и index[1] предметов: ComboBox1.SelectedIndex == 0 и ComboBox1.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 ]

3 голосов
/ 02 декабря 2009

Вы проверяли шаг за шагом с помощью отладчика? Я думаю, что исключение IndexOutBounds происходит перед if. Возможно, я бы попробовал поймать этот блок и посмотреть, нет ли там исключения.

0 голосов
/ 02 декабря 2009

Похоже, вы слишком рано увеличиваете этот индекс. Вы проверяете значение Items[index], но затем увеличиваете индекс, прежде чем использовать значение в Items[index]. Итак, вы получаете в реальности: Items[index+1]

Но в целом я довольно смущен вашим вопросом. Не могли бы вы опубликовать еще немного кода и более подробное объяснение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...