c#加载表单时如何对listview排序

c#加载表单时如何对listview排序,c#,listview,sorting,methods,load,C#,Listview,Sorting,Methods,Load,我有一个包含3列(Map、From、To)的listview(lvMap),我正在尝试编写一个在表单加载后立即调用的方法。此方法应该查看listview项,并按升序仅按“Map”和“From”两列对它们进行排序,我不希望它对“to”列进行排序。我已经写了下面的代码,但是它会对每一列进行排序,有没有办法在排序过程中保留一列。谢谢 private void sortListViewOrder() { lvMappings.Sorting = SortOrder.Ascending;

我有一个包含3列(Map、From、To)的listview(lvMap),我正在尝试编写一个在表单加载后立即调用的方法。此方法应该查看listview项,并按升序仅按“Map”和“From”两列对它们进行排序,我不希望它对“to”列进行排序。我已经写了下面的代码,但是它会对每一列进行排序,有没有办法在排序过程中保留一列。谢谢

private void sortListViewOrder()
{
    lvMappings.Sorting = SortOrder.Ascending;
    lvMappings.Sort();
}

我建议您参考以下MSDN文章,希望它能回答您的问题:

基本上,您需要创建一个ListViewColumnSorter实例,并将其添加到ListView控件中


从这里开始,文章将有足够的信息:)

您必须使用
ListViewColumnSorter
进行操作。下面的KB链接提供了执行此操作的示例代码

您可以使用指定要排序的列

 Create an instance of a ListView column sorter and assign it 
// to the ListView control.
lvwColumnSorter = new ListViewColumnSorter();
this.listView1.ListViewItemSorter = lvwColumnSorter;

lvwColumnSorter.SortColumn = Column;

我需要ListView控件中的这个特性或函数。我在这里第一次看到的使用扩展类的建议。我试过了,它成功了,但直到现在我才知道如何轻松地做到这一点。请参阅此参考问题:

步骤1:在项目中创建(单独的)ControlExtensions类,并粘贴以下代码:

using System.Reflection;
using System.Windows.Forms;

namespace [YourNameSpace]
{
    public static class ControlExtensions
    {
        public static void DoubleBuffering(this Control control, bool enable)
        {
            var method = typeof(Control).GetMethod("SetStyle", BindingFlags.Instance | BindingFlags.NonPublic);
            method.Invoke(control, new object[] { ControlStyles.OptimizedDoubleBuffer, enable });
        }
    }
}
步骤2:在具有ListView的WinForms中定义以下内容:

        private ListViewColumnSorter lvwColumnSorter = null;
初始化组件()后;第节,定义以下内容:

        lvwColumnSorter = new ListViewColumnSorter();
        this.lvwRunningProcesses.ListViewItemSorter = lvwColumnSorter;
        lvwColumnSorter._SortModifier = ListViewColumnSorter.SortModifiers.SortByText;
步骤3:在表单加载事件中,在填充列表视图后添加以下行:

        // Sort in ascending order Column 0
        lvwColumnSorter.SortColumn = 0;
        lvwColumnSorter.Order = SortOrder.Ascending;
        this.lvwRunningProcesses.Sort();

就这样

嘿,谢谢,但这篇文章是基于是否列已点击。我不想非得单击该列对其项目进行排序。如果您想知道什么是
ListViewColumnSorter
,可以在页面底部找到它: