首页 / 知识
关于c#:如何在更新单个ListViewItem的文本时防止ListView闪烁?
2023-04-16 20:42:00

How to prevent flickering in ListView when updating a single ListViewItem's text?我想要的是更新ListViewItem的文本,而不会看到任何闪烁。 这是我的更新代码(多次调用):
我已经看到了一些解决方案,其中涉及覆盖组件的
他们说这解决了问题,但就我而言,没有。 我相信这是因为我在每个项目上都使用了图标。 可接受的答案是可行的,但是相当冗长,并且仅出于启用双重缓冲而从控件派生(就像其他答案中提到的那样)也有点过头了。但是幸运的是,如果我们愿意,我们可以进行反思,也可以调用内部方法(但请确保您所做的!)。 将这种方法封装到扩展方法中,我们将得到一个很短的类:
可以在我们的代码中轻松调用:
所有的闪烁都消失了。 更新资料 我偶然发现了这个问题,由于这个事实,扩展方法应该(也许)更好:
为了结束这个问题,这里是一个帮助程序类,当为表单中的每个ListView或任何其他ListView的派生控件加载表单时,应调用该类。感谢" Brian Gillespie"提供的解决方案。
CommonControls 6(XP或更高版本)中的ListView支持双缓冲。幸运的是,.NET将最新的CommonControl包装在系统上。若要启用双重缓冲,请将适当的Windows消息发送到ListView控件。
详细信息如下: 在.NET Winforms 2.0中,存在一个称为DoubleBuffered的受保护属性。 通过从ListView继承,可以将此受保护的属性设置为true。这将启用双重缓冲,而无需调用SendMessage。 设置DoubleBuffered属性与设置以下样式相同:
http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=94096 我知道这个问题已经很久了,但是因为这是Google上的第一批搜索结果之一,所以我想分享我的修正。
我可以消除100%闪烁的唯一方法是将Oliver(扩展类具有双缓冲)的答案与
靠它们自己都无法解决我的闪烁问题。 这将有助于:
简单的解决方案是这样的: yourlistview.BeginUpdate() //对列表中的添加和删除项目进行更新 yourlistview.EndUpdate() 在设置任何列表视图项目之前,请在ListView上调用BeginUpdate()方法,然后仅在添加所有项目之后才调用EndUpdate()。 这样可以停止闪烁。 这是在黑暗中拍摄的照片,但是您可以尝试对控件进行双重缓冲。
如果您只想更新文本,只需直接设置更改后的SubItem的文本,而不是更新整个ListViewItem(您尚未说明更新的方式)。 您显示的覆盖等效于简单地覆盖OnPaintBackground,这将是一种"更正确"的托管方式来执行该任务,并且对单个项目无济于事。 如果您仍然有问题,我们将需要澄清您实际尝试过的操作。 |
最新内容
相关内容
更新文件命令linux?
更新文件命令linux?,工作,系统,地址,信息,时间,命令,目录,基础,标准,网络,linux常用命令1、linux系统常用操作命令如下:ls:全拼list,功能是列出目linux不定期更新命令?
linux不定期更新命令?,系统,服务,地址,发行,实时,数据,标准,工具,工作,软件,linux的软件实施shell更新脚本1、stop=$(stop)update=$(update)stlinux项目更新命令行?
linux项目更新命令行?,工作,地址,系统,数据,信息,项目,标准,电脑,目录,命令,linux常用的命令有哪些1、linux系统常用操作命令linux系统常用操linux命令更新网卡?
linux命令更新网卡?,系统,工具,信息,电脑,网卡,最新,服务,网络,工作,材料,如何在linux系统下配置无线网卡1、可通过以下步骤在Linux下写无线网linux更新源版本命令?
linux更新源版本命令?,软件,系统,最新,管理,信息,工具,对比,在线,平台,代码,linux系统装好后怎么更新源?1、如果是deepin的linux系统,直接 sudolinux常用命令文本?
linux常用命令文本?,工作,命令,网络,地址,系统,管理,标准,信息,目录,文件,Linux用户以及权限相关常用命令总结sudo和su类似,有一些附加的属性,管linux命令错误的是?
linux命令错误的是?,系统,信息,异常,密码,工具,地址,网络,实时,状态,数据,Linux系统中输入命令,输出结果有误是怎么回事?出现以上提示,很多原因linux更新显卡命令?
linux更新显卡命令?,官方网站,官网,信息,平台,软件,设备,显卡,数字,管理,环境,linux如何重启显卡驱动1、vaapi可以通过一个第三方开发的库:libvlinux更新安装命令行?
linux更新安装命令行?,软件,系统,工作,在线,地址,名称,官网,命令,中心,情况,Linux安装基本命令1、首先从官网下载hdf5,根据自己的要求下载对应批量更新linux命令行?
批量更新linux命令行?,工作,系统,信息,地址,目录,命令,位置,观察,管理,标准,Linux系统常用操作命令有哪些linux系统常用操作命令linux系统常用linux文本查询命令?
linux文本查询命令?,标准,命令,文件,工具,数据,信息,位置,系统,内容,文本,Linux下Grep命令的详细使用方法?1、查找root目录下包含Linux的文件,linux在线命令文本?
linux在线命令文本?,系统,工作,信息,在线,地址,命令,基础,标准,工具,目录,Linux常用命令linux系统常用操作命令如下:ls:全拼list,功能是列出目录