C#:排序后如何在ListView中选择顶部项目



我正在填充我的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;
}

如果那不起作用,则可以将重点放在列表视图本身以查看选择是否属于正确的项目。

最新更新