我正在填充我的system.windows.forms.listview,并带有我的数据库结果:
foreach (DataRow row in theTable.Rows)
{
...build item from row..
myListView.Items.Add(item);
}
,然后我想以与DB回来的行不同顺序排序我的listView,所以我呼叫
myListView.Sort();
但是,当我想去选择列表视图中的顶部项目时,它将选择除了顶级项目以外的其他内容:
myListView.Items[0].Selected = true;
是有道理的,因为项目集合是按照通过foreach循环迭代的表添加到行的顺序的。
使用mylistview.topitem.seleted = true也不起作用。
那么,我如何选择列表视图中的最顶部项目?
感谢您的任何答案。
您确定当前选择了列表视图吗?如果未选择,您将看不到正在选择的项目。
以下代码似乎正在工作:
private void Populate(object sender, EventArgs e)
{
listView1.Items.Add("D");
listView1.Items.Add("B");
listView1.Items.Add("A");
listView1.Items.Add("C");
}
private void SelectFirst(object sender, EventArgs e)
{
listView1.Items[0].Selected = true;
listView1.Select();
}
private void SortAndSelect(object sender, EventArgs e)
{
listView1.Sorting = SortOrder.Ascending;
listView1.Sort();
listView1.Items[0].Selected = true;
listView1.Select();
}
注意listView1.Select()
您可能已将远程选择设置为true。使其假,然后尝试。
myListView.HideSelection = false;
此外,ListViews可以具有选定的项目,但没有重点放在其他项目上。因此,最好将重点和选择放在一起:
if (myListView.Items.Count > 0)
{
myListView.Items[0].Selected = true;
myListView.Items[0].Focused = true;
}
如果那不起作用,则可以将重点放在列表视图本身以查看选择是否属于正确的项目。