2012-06-26 3 views
0

Я хочу создать оператор if, который распознает, какая строка была удалена из определенного списка. Я думал, что я мог сделать, если утверждение, аналогичное приведенному ниже, и заставить его работать, но он говорит мне, что имеет недействительные заданы параметры - если кто-нибудь может вести меня было бы оценилКак сравнить selectedIndex со строкой в ​​listBox

private void button2_Click(object sender, EventArgs e) 
    { 

     listBox2.Items.RemoveAt(listBox2.SelectedIndex); 
     if(listBox2.Items.RemoveAt(listBox2.SelectedItems.ToString().Equals("Test"))) 
     { 
     picturebox.Image = null; 
     } 
    } 

ответ

3

Вы должны проверить SelectedItemперед его удаления:

private void button2_Click(object sender, EventArgs e) 
{ 
    if (listBox2.SelectedIndex != -1) 
    { 
     if (listBox2.SelectedItem.ToString().Equals("Test"))) 
      picturebox.Image = null; 

     listBox2.Items.RemoveAt(listBox2.SelectedIndex); 
    } 
} 

Я также добавил проверку, чтобы убедиться, что элемент фактически выбран (так как вы получите ошибки в противном случае).

0

Вы должны сделать что-то вроде:

String deletedString = listBox2.Items.ElementAt(listBox2.SelectedIndex).ToString(); 
    listBox2.Items.RemoveAt(listBox2.SelectedIndex); 
    if(listBox2.Items.RemoveAt(deletedString == "Test")) 
    { 
    picturebox.Image = null; 
    } 

Это не может компилировать (Проверьте товары имеют SelectedItem свойства).

1

Ваша проблема заключается в том, что вы вызываете ListBox.Items.RemoveAt(int index) и переходите к логическому значению: listBox2.SelectedItems.ToString().Equals("Test")).

Кроме того, вы сначала удаляете элемент, а затем снова вызываете RemoveAt, который фактически удалит другой элемент (независимо от того, что сейчас находится в этом индексе), или выбросит исключение, если вы вышли за пределы вашей коллекции ListBox.

Вы должны сначала проверить, если выбранный элемент равен «Test», а затем удалить этот пункт из вашего ListBox, например, так:

private void button2_Click(object sender, EventArgs e) 
{ 
    // SelectedIndex returns -1 if nothing is selected 
    if(listBox2.SelectedIndex != -1) 
    { 
     if(listBox2.SelectedItem.ToString().Equals("Test")) 
     { 
      picturebox.Image = null; 
     } 
     listBox2.Items.RemoveAt(listBox2.SelectedIndex); 
    } 
} 
Смежные вопросы