如何在表单加载时对列表视图进行排序?
本文关键字:视图 排序 列表 表单 加载 | 更新日期: 2023-09-27 18:13:43
我有一个listview (lvMap)与3列(Map, From, To)我正试图写一个方法,即调用我的表单加载。这个方法应该看看列表视图项目,并排序他们只有2列"Map"answers"From"按升序,我不希望它排序"to"列。我已经写了下面的代码,但它排序每一个单独的列,是否有一种方法,以离开一列的排序过程。谢谢。
private void sortListViewOrder()
{
lvMappings.Sorting = SortOrder.Ascending;
lvMappings.Sort();
}
我建议你参考下面的MSDN文章,希望它能回答你的问题:
http://support.microsoft.com/kb/319401基本上你需要创建一个ListViewColumnSorter实例,并将其添加到你的ListView控件。
从这里开始,文章将有足够的信息:)
您必须使用ListViewColumnSorter
。下面的KB Link提供了这样做的示例代码。
您可以使用
指定要排序的列。 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控件中使用这个特性或函数。我第一次看到使用扩展类的建议是在这里。我试过了,效果不错,但直到现在我才知道如何轻松地做到这一点。参考这个参考问题:如何防止在ListView闪烁时更新单个ListViewItem's文本?
步骤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;
InitializeComponent后();Section中,定义如下内容:
lvwColumnSorter = new ListViewColumnSorter();
this.lvwRunningProcesses.ListViewItemSorter = lvwColumnSorter;
lvwColumnSorter._SortModifier = ListViewColumnSorter.SortModifiers.SortByText;
步骤3:在Form Load事件中,在填充列表视图之后添加这些行:
// Sort in ascending order Column 0
lvwColumnSorter.SortColumn = 0;
lvwColumnSorter.Order = SortOrder.Ascending;
this.lvwRunningProcesses.Sort();
就是这样!