ListBox 不会删除 c# 中的第一项

ListBox won't remove the first item in c#

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 次并删除第二次,就会出现错误。

试试吧。例如一些,一些,一些

尝试从其位置移除项目而不是项目本身。我发现这样做不再选择另一个项目,因为焦点已完全从列表框中移除。

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");

}

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");

尝试像这样选择下一项:

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

行为: