我有一个ListView,里面有几个项目。当ListView失去焦点时,最后选择的ListViewItem仍然以灰色背景“选中”
我想在ListView.FocusLost上实现它,选择消失了,因此会发生ListView.SelectedIndexChanged事件。
有什么想法吗?
我正在使用.NET CF 3.5。
答案 0 :(得分:19)
假设您正在从父窗体/控件访问ListView。
您可以在表单的/ 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;
}
你可以给代码一个更好的形式,顺便说一句。
答案 1 :(得分:5)
myListView.SelectedItems.Clear();
答案 2 :(得分:2)
我知道这已经晚了,但是如果其他人需要解决方案,我想添加到解决方案中。
您需要将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;
}
答案 3 :(得分:1)
这更容易。
this.myListView.SelectedIndex = -1;
this.myListView.Update();
答案 4 :(得分:1)
解决这个问题的另一个有效方法是:
foreach (ListViewItem i in myListView.SelectedItems)
{
i.Selected = false;
}
答案 5 :(得分:0)
如果您使用的是EditItemTemplate而不是ItemTemplate,您可能一直在试图找出为什么ListView1.SelectedIndex = -1;还没有工作。这是因为你需要使用ListView1.EditIndex = -1;
答案 6 :(得分:0)
您可以尝试:
<body>
<table class="table">
<tr>
<td>
<div style="background-color: green; padding: 10px;">dd</div>
</div>
<td> </td>
</td>
<tr>
<td>
<div style="display: block;">
<div style="background-color: red; width: 400px; margin-right: 5px; display: inline-block">dd</div>
<div style="background-color: red; width: 400px; margin-right: 5px; display: inline-block">dd</div>
<div style="background-color: red; width: 400px; margin-right: 5px; display: inline-block">dd</div>
<div style="background-color: red; width: 400px; margin-right: 5px; display: inline-block">dd</div>
<div style="background-color: red; width: 400px; margin-right: 5px; display: inline-block">dd</div>
<div style="background-color: red; width: 400px; margin-right: 5px; display: inline-block">dd</div>
</div>
</td>
<td> </td>
</tr>
</table>
<!-- DivTable.com -->
</body>
或者如果您在(xaml.cs)后面的View代码中创建了OnSelection:
MyList.ItemSelected += (sender, e) => {
((ListView)sender).SelectedItem = null;
};
致谢
答案 7 :(得分:-1)
if (listView1.SelectedItems.Count > 0)
for (int i = 0; i < listView1.SelectedItems.Count; i++)
{
listView1.SelectedItems[i].Selected = false;
}