我需要 ListView 控件中的这个特性或函数。我在这里第一次看到使用扩展类的建议。我试过了,它奏效了,但直到现在我才知道如何轻松地做到这一点。请参阅此参考问题:
更新单个 ListViewItem 的文本时如何防止 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();
而已!