2016-10-22 2 views
1
private void button_Click(object sender, RoutedEventArgs e) //ADD 
{ 
    listBox.Items.Add("some"); 
    listBox.Items.Add("text");   

} 


private void button1_Click(object sender, RoutedEventArgs e) //DELETE 
{ 

    if (!(listBox.SelectedIndex == -1)) 
     listBox.Items.Remove(listBox.SelectedItem); 
    else 
     System.Windows.MessageBox.Show("You have not selected an item"); 

} 

ListBox не удаляет первый элемент. Причина в том, что после удаления элемента на предыдущем элементе появляется белая рамка. Я не знаю, почему эта граница появляется. Смотрите изображение, чтобы понять, что я имею в виду. Когда появляется белая рамка, и я пытаюсь удалить первый элемент, он говорит, что я не выбрал элемент. Если я сохраняю 3 раза один и тот же элемент и удаляю второй, появляется ошибка.ListBox не удаляет первый элемент в C#

Попробуйте. например, некоторые, некоторые, некоторые

enter image description here

+0

Может не reprocude что вы правильное поведение, см. здесь: http://imgur.com/a/0Brvt – DoubleVoid

+0

@DoubleVoid try listBox.Items.Add ("some"), listBox.Items.Add ("some"), listBox.Items.Add ("some"); и удалить сначала второй –

+0

Теперь он ведет себя следующим образом: http://imgur.com/yNyPJFU ... кажется мне хорошо – DoubleVoid

ответ

1

Попробуйте удалить этот пункт из своей позиции, а не сам предмет. Я нашел, что это больше не выбирает другой элемент, поскольку фокус полностью удален из списка.

private void button1_Click(object sender, RoutedEventArgs e) 
{ 
    if (listBox.SelectedIndex != -1) 
     listBox.Items.RemoveAt(listBox.SelectedIndex); 

    else 
     System.Windows.MessageBox.Show("You have not selected an item"); 

} 
0

код в button1_click случае должно быть что-то вроде этого

var index = listBox.SelectedIndex; 

if (index != -1) 
{ 
    // remove item 
    listBox.Items.RemoveAt(index); 

    // select a new item 
    if (listBox.Items.Count > index) 
     listBox.SelectedIndex = index; 
    else 
     listBox.SelectedIndex = index - 1; 
} 
else 
    System.Windows.MessageBox.Show("You have not selected an item"); 
0

Попробуйте выбрать следующий пункт так:

private void button2_Click(object sender, EventArgs e) 
    { 
     if (!(listBox1.SelectedIndex == -1)) 
     { 
      int index = listBox1.SelectedIndex; 
      listBox1.Items.Remove(listBox1.SelectedItem); 

      if (index > 0) 
       listBox1.SetSelected(index - 1,true); 
      else if(listBox1.Items.Count > 0) 
       listBox1.SetSelected(0, true); 


     } 
     else 
      MessageBox.Show("You have not selected an item"); 
    } 

поведение: Behaviour

+0

Это не удалит правильный элемент в списке – Jim

Смежные вопросы