C# listview 的自动选中某行的问题
C# 中如何做到当选中listview某行删除后,自动选中它的上面的一行,如果删除的是第一行,就选中它的下一行,希望能够得到帮助!
[解决办法]
//先检查是否选中过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();//滚动显示}
[解决办法]
先设置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();//滚动显示
}
[解决办法]