C# 列表视图排序

C# 列表视图排序,c#,windows-ce,C#,Windows Ce,我想在单击列标题时对listview数据进行排序。 找到了这篇带有代码的文章。 但是当运行它时,第一行 ColHeader clickedCol = (ColHeader)this.listView_ChkInOut.Columns[e.Column]; 已生成错误未处理无效的强制转换异常 public class ColHeader : ColumnHeader { public bool ascending; public

我想在单击列标题时对listview数据进行排序。 找到了这篇带有代码的文章。

但是当运行它时,第一行

ColHeader clickedCol = (ColHeader)this.listView_ChkInOut.Columns[e.Column];
已生成错误未处理无效的强制转换异常

public class ColHeader : ColumnHeader
        {
            public bool ascending;
            public ColHeader(string text, int width, HorizontalAlignment align, bool asc)
            {
                this.Text = text;
                this.Width = width;
                this.TextAlign = align;
                this.ascending = asc;
            }
        }
我不懂代码,有人能解释一下为什么会有这个错误吗

        ColumnHeader lickedCol = (ColumnHeader)this.listView1.Columns[e.Column];
        MessageBox.Show(lickedCol.Text);
据我所知,这应该能正常工作。 至少我得到了正确的文本

在您提供的示例中,当他添加ColumnHeader时会发生这种情况

// parameter specifies true for an ascending sort order.
listView1.Columns.Add(new ColHeader("Name", 110, HorizontalAlignment.Left, true));
listView1.Columns.Add(new ColHeader("Region", 50, HorizontalAlignment.Left, true));
listView1.Columns.Add(new ColHeader("Sales", 70, HorizontalAlignment.Left, true));

他添加了列标题,而不是列标题。我认为你没有这样做,然后你就犯了错误,至少这就是我所经历的;)

显然,
this.listView\u ChkInOut.Columns[e.Column]
不是
ColHeader
类型。因此,我应该如何为ColHeader类型编写代码?能否显示实现ColHeader类?是的。它确实获得了文本。但无法使用下一个代码。int numItems=this.listview\u availableaset.Items.Count;System.Windows.Forms.ColumnHeader不包含Ascending的定义,但我的listview是从dataset生成的,因此如何设置参数?以编程方式执行;)。我不知道你的代码,所以我不能更具体。如果我想让它也排序desc呢?然后我会将bool升序改为false。您应该查看上面提供的示例中的SortComparer类:)