C# 中如何做到当选中listview某行删除后,自动选中它的上面的一行,如果删除的是第一行,就选中它的下一行,希望能够得到帮助! 

解决方案 »

  1.   

    //先检查是否选中过
    if (ListView1.SelectedIndices.Count==0) return;
    //记住之前选择
    int last = ListView1.SelectedIndices[0];
    //删除选中项
    ListView1.Items.RemoveAt(last);
    last = Math.Min(last, ListView1.Items.Count - 1);//如果是最后一条,则减少1个
    //查看是否在有效范围
    if (ListView1.Items.Count > last)//确认last有效
    {
        ListView1.Items[last].Selected = true;//选中
        ListView1.Items[last].Focused = true; //焦点
        ListView1.Items[last].EnsureVisible();//滚动显示
    }
      

  2.   

    先设置listview 必须为单选   (MultiSelect 多选属性),然后在进行选中行删除以后选中其它行操作,if (ListView1.SelectedIndices.Count==0) return;int index = ListView1.SelectedIndices[0];
    //删除选中项
    ListView1.Items.RemoveAt(index);if(ListView1.Items.Count==index)
    {
        ListView1.Items[index-1].Selected = true;//选中
        ListView1.Items[index-1].Focused = true; //焦点
        ListView1.Items[index-1].EnsureVisible();//滚动显示
    }
    else if(ListView1.Items.Count>index)
    {
        ListView1.Items[index].Selected = true;//选中
        ListView1.Items[index].Focused = true; //焦点
        ListView1.Items[index].EnsureVisible();//滚动显示
    }