我正在用我的数据库中的结果填充我的 System.Windows.Forms.ListView:
foreach (DataRow row in theTable.Rows)
{
...build item from row..
myListView.Items.Add(item);
}
然后我想按照与从数据库返回的行不同的顺序对我的 ListView 进行排序,所以我调用
myListView.Sort();
但是当我想去选择 ListView 中的顶部项目时它不起作用,它选择了顶部项目以外的东西:
myListView.Items[0].Selected = true;
这是有道理的,因为 Items 集合是按照在 foreach 循环中迭代的表中的行的顺序添加的。
使用 myListView.TopItem.Seleted = true 也不起作用。
那么,在对 ListView 进行排序后,我该如何选择 ListView 中最上面的项目呢?
感谢您的回答。
最佳答案
您确定当前选择了 ListView 吗?如果未选中,您将看不到被选中的项目。
以下代码似乎有效:
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()
关于C#:如何在排序后选择 ListView 中的顶部项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13298805/