gpt4 book ai didi

C# listview imagelist 快速添加多个项目

转载 作者:行者123 更新时间:2023-11-30 13:03:55 25 4
gpt4 key购买 nike

我的表单上有一个 C# 中的 ListView 和 ImageList,并读取了一个最多包含大约 1000 个文件的目录。我使用 AddRange 方法使用 fileItems DummyItems 的计数预填充 ListView 和 ImageList,以避免 ListView 闪烁和滚动。

现在在第二步中,我只想在从文件系统读取真实项目时将正确的项目信息分配给虚拟项目。到目前为止,项目文本没问题,但我无法替换虚拟图像。如果我尝试这样做,它总是会抛出一个无效参数异常。要使用 RemoveAtIndex 或 RemoveAtKey 删除图像然后重新添加,我需要很长时间才能遍历 1000 个文件。使用 ImageList 中的“RemoveAtKey”,1000 个文件需要 8 分钟。 “RemoveAtKey”是我发现的瓶颈。如果我尝试清除之前的所有图像并再次使用 AddRange 重新填充,我的项目图像变为空白或发生异常。有人知道我如何使用不同于我使用的其他方法从 1000 个文件中获取 1000 个不同的缩略图并将文件名快速放入 ListView 控件中吗?

最佳答案

首先,您可能希望使用以下代码创建一个名为“ListViewNF”的新用户控件:

class ListViewNF : System.Windows.Forms.ListView
{
public ListViewNF()
{
//Activate double buffering
this.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint, true);

//Enable the OnNotifyMessage event so we get a chance to filter out
// Windows messages before they get to the form's WndProc
this.SetStyle(ControlStyles.EnableNotifyMessage, true);
}

protected override void OnNotifyMessage(Message m)
{
//Filter out the WM_ERASEBKGND message
if(m.Msg != 0x14)
{
base.OnNotifyMessage(m);
}
}
}

这解决了高速添加项目到 ListView 时的闪烁问题。

我还在为你的其他问题做一些研究和测试。

关于C# listview imagelist 快速添加多个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11178765/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com