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

标签 c# .net winforms

我正在用我的数据库中的结果填充我的 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/

相关文章:

c# - 如何在 Azure 通信服务聊天中附加文件?

c# - 从另一个线程启用/禁用菜单项

c# - DocFX 离线文档

c# - 需要轻量级 .NET SMTP 实现(程序集或源代码)

.net - 在 Visual Studio 中调试时如何更改工作目录?

c# - CE5 中的触摸屏阻止来自外围设备的数据流量

c# - 根据字典查找查询填充字符串

c# - .NET Regex.Matches 在找到包含 * () 的模式的多个匹配项时行为不符合预期

c# - 如何只在点击 "ok"时返回一个值

c# - 使用 Application.DoEvents()