C#:如何在排序后选择列表视图中的顶级项目

Luk*_*uke 5 .net c# winforms

我正在使用我的数据库中的结果填充我的System.Windows.Forms.ListView:

foreach (DataRow row in theTable.Rows)
{
    ...build item from row..

    myListView.Items.Add(item);
}
Run Code Online (Sandbox Code Playgroud)

然后我想按照与从DB返回的行不同的顺序对listview进行排序,所以我打电话

myListView.Sort();
Run Code Online (Sandbox Code Playgroud)

但是当我想要在列表视图中选择顶部项目时它将无法工作,它选择了除顶部项目之外的其他内容:

myListView.Items[0].Selected = true;
Run Code Online (Sandbox Code Playgroud)

有意义,因为Items集合按照foreach循环中迭代的表的行的顺序添加.

使用myListView.TopItem.Seleted = true也不起作用.

那么在我对它进行排序之后,如何选择列表视图中最顶层的项目呢?

谢谢你的回答.

Nit*_*tay 5

您确定当前选择了列表视图吗?如果未选择,您将看不到被选择的项目。

以下代码似乎有效:

    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();
    }
Run Code Online (Sandbox Code Playgroud)

注意 listView1.Select()