如何取消选择ListView中的项目?

时间:2011-08-17 07:28:41

标签: c# .net compact-framework

我有一个ListView,里面有几个项目。当ListView失去焦点时,最后选择的ListViewItem仍然以灰色背景“选中” 我想在ListView.FocusLost上实现它,选择消失了,因此会发生ListView.SelectedIndexChanged事件。
有什么想法吗?

我正在使用.NET CF 3.5。

8 个答案:

答案 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>&nbsp;</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>&nbsp;</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;
    }