我如何在列表视图中取消选择项目
本文关键字:取消 选择 项目 视图 列表 | 更新日期: 2023-09-27 18:05:54
我有一个ListView与几个项目在它。当ListView失去焦点时,最后选中的ListViewItem仍然是"选中的",背景为灰色。
我想在ListView上实现这个。FocusLost,选择消失了,因此ListView也消失了。SelectedIndexChanged事件将发生。
什么好主意吗?
假设您正在从父窗体/控件访问ListView。
你可以在form的/control的构造函数/load事件中添加这段代码:
this.myListView.LostFocus += (s, e) => this.myListView.SelectedIndices.Clear();
在你的例子中,你可以用:
代替那个委托if (this.myListView.SelectedIndices.Count > 0)
for (int i = 0; i < this.myListView.SelectedIndices.Count; i++)
{
this.myListView.Items[this.myListView.SelectedIndices[i]].Selected = false;
}
你可以给代码一个更好的形式,顺便说一下。
myListView.SelectedItems.Clear();
我知道这有点晚了,但如果有人需要解决方案,我想添加到解决方案中。
您需要将Focused属性设置为false以避免取消选择的项目具有焦点。
for (int i = 0; i < this.myListView.SelectedIndices.Count; i++)
{
this.myListView.Items[this.myListView.SelectedIndices[i]].Selected = false;
this.myListView.Items[this.myListView.SelectedIndices[i]].Focused = false;
}
另一种有效的方法是:
foreach (ListViewItem i in myListView.SelectedItems)
{
i.Selected = false;
}
你可以试试:
MyList.ItemSelected += (sender, e) => {
((ListView)sender).SelectedItem = null;
};
或者如果你在View代码中创建了OnSelection (xaml.cs):
private void OnSelection(object sender, SelectedItemChangedEventArgs e)
{
((ListView)sender).SelectedItem = null;
}
对
这样比较容易。
this.myListView.SelectedIndex = -1;
this.myListView.Update();
如果您正在使用EditItemTemplate,而不是ItemTemplate,您可能一直在试图弄清楚为什么ListView1。selecteindex = -1;一直没起作用。这是因为你需要使用ListView1。
if (listView1.SelectedItems.Count > 0)
for (int i = 0; i < listView1.SelectedItems.Count; i++)
{
listView1.SelectedItems[i].Selected = false;
}