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

时间:2016-10-22 23:54:18

标签: c# wpf listbox listboxitem

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

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

enter image description here

3 个答案:

答案 0 :(得分: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");

}

答案 1 :(得分: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");

答案 2 :(得分: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