C# ListView排序

标签 c# winforms listview

我有 2 个 ListView,我正在将选定的项目从一个添加到另一个。第一个 ListView,我们称之为 availableJobs,第二个 ListView selectedJobs。人们可以从第一个 ListView 中选择一个或多个工作并将其移动到第二个。现在我想要的是排序应该与第一个 ListView 中的一样。在第一个 availableJobs 中,作业按作业 ID 排序,我只想在 selectedJobs TreeView 中保留该排序。

例如:

1) 我选择 ID 为 3 的作业并将其移动到 selectedJobs TreeView
2) 我选择 ID 为 1 的作业并将其移动到 selectedJobs

现在 selectedJobs 中的顺序将是:

工作 3
作业 1

我需要的是,当我添加 ID 为 1 的 Job 时,它会从 ID 为 3 的 Job 进入。

我尝试使用自定义比较器:

    public class IntegerComparer : IComparer
    {
        private int _colIndex;
        public IntegerComparer(int colIndex)
        {
            _colIndex = colIndex;
        }
        public int Compare(object x, object y)
        {
            int nx = int.Parse((x as ListViewItem).SubItems[_colIndex].Text);
            int ny = int.Parse((y as ListViewItem).SubItems[_colIndex].Text);
            return nx.CompareTo(ny);
        }
    }

但问题是它将 ID 为 10、11 等的作业放在 2、3 等之前。

最佳答案

您可以使用 ListView 的排序功能:

http://msdn.microsoft.com/en-us/library/ms996467.aspx

或者直接将作业从 ListView1 添加到 ListView2,您可以填充按 Id 排序的 LineItem(或定制对象)列表,您可以将该列表用作 ListView2 的数据源

关于C# ListView排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6190712/

相关文章:

c# - 隐藏 ListView ,直到按下按钮

c# - 关于 .net 核心的 csproj 格式的完整文档在哪里?

c# - 如何删除气球工具提示上的 "wrench"按钮?

android - NullPointerException 自定义 ListView 适配器

c# - 名称不能以 '1' 字符开头,十六进制值为 0x31。从 xml 文件读取时

c# - "Use the new keyword if hiding was intended"警告

c# - 如何在 ASP.NET 网站上显示硬盘文件夹中的图像列表?

javascript - "chkAutoPick.Checked ? string.Empty : "来自 : "+ txtDtFrom.Text" in javascript 的含义是什么

c# - 在使用 Entity Framework 和 MySQL 读取期间将 VARCHAR 作为 BINARY 访问?

c# - 如何知道网络接口(interface)何时在 C# 中使用路由器作为 DNS 服务器?