首页 / 知识
关于c#:在WinForms中的控件更新期间闪烁(例如DataGridView)
2023-04-15 10:14:00

Flickering during updates to Controls in WinForms (e.g. DataGridView)在我的应用程序中,我有一个DataGridView控件,该控件显示所选对象的数据。 当选择其他对象时(在上面的组合框中),我需要更新网格。 不幸的是,不同的对象具有完全不同的数据,甚至具有不同的列,因此我需要清除所有现有数据和列,创建新列并添加所有行。 完成此操作后,整个控件将可怕地闪烁,并且需要很长时间。 有没有一种通用的方法可以使控件处于更新状态,以便它不会重新绘制自身,而是在完成所有更新后重新绘制它? TreeViews当然是可能的:
是否有通用方法可以与其他控件(特别是DataGridView)一起使用? 更新:对不起,我不确定我是否足够清楚。 我看到"闪烁",因为在单次编辑后,控件将重新绘制在屏幕上,因此您可以看到滚动条缩小等。 人们似乎忘记了一个简单的解决方案:
我知道这看起来很奇怪,但是可以。当对象不可见时,它不会重绘自身。但是,您仍然需要进行 .NET控件支持SuspendLayout和ResumeLayout方法。选择适当的父控件(即托管要填充的控件的控件),然后执行以下操作:
双缓冲在这里无济于事,因为只有双缓冲绘画操作,OP看到的闪烁是多次绘画操作的结果:
因此需要四次重绘以更新控件,从而实现闪烁。不幸的是,并非所有标准控件都具有BeginUpdate / EndUpdate,它将删除所有重画调用,直到调用EndUpdate。您可以执行以下操作: 选项1和2仍会闪烁。 在我正在使用的.Net GUI程序上,我创建了一组自定义控件,这些控件消除了所有闪烁。
而不是一次添加一个数据网格的行,而是使用 这对我有用。 http://www.syncfusion.com/faq/windowsforms/search/558.aspx 基本上,它涉及从所需的控件派生并设置以下样式。
不幸的是,我认为Thins可能只是.net框架的副产品。尽管使用自定义控件,但我也遇到了类似的闪烁。我阅读的许多参考资料都表明了这一点,同时双重缓冲方法无法消除任何闪烁。 听起来像您想要双重缓冲: http://www.codeproject.com/KB/graphics/DoubleBuffering.aspx 尽管此方法主要用于单个控件,但是您可以在Windows Forms控件或Form中实现它。 您也可以尝试此操作。
|
最新内容
相关内容
linux启动显示命令行?
linux启动显示命令行?,系统,密码,终端,状态,首页,情况,基础,电脑,信息,工具,linux,按了ctrl+alt+F1,进入了类似纯命令行的界面,让输入login信linux显示之前的命令?
linux显示之前的命令?,系统,信息,命令,地址,服务,环境,数据,标准,数字,不了,linux系统查看自己在linux上使用过的前10次命令首先打开Linux直接linux打开显示器命令?
linux打开显示器命令?,信息,工具,系统,环境,发行,实时,数据,设备,命令,文件,Linux文件系统操作命令cat:可以显示文件的内容(经常和more搭配使用linux命令实时显示?
linux命令实时显示?,系统,实时,时间,信息,情况,命令,对比,电脑,名称,一致,linux用set命令显示当前模式set命令作主要是显系统中已经存在的shellinux外部命令显示?
linux外部命令显示?,系统,工具,命令,一致,盘中,软件,技术,外部,内部,文件夹,Linux中如何分屏显示的命令是什么linux中如果想要把某个命令或者linux命令显示ip?
linux命令显示ip?,地址,系统,网络,信息,技术,电脑,手机,设备,服务,管理,配置LINUX的IP命令1、(1)Ifconfig命令 第一种使用ifconfig命令配置网卡linux编译时显示命令?
linux编译时显示命令?,系统,基础,工具,代码,百度,下来,网上,命令,内核,文件,LINUX中此程序运行后,为何刷新不出命令提示符?1、有几个原因:一:你linux显示运行命令?
linux显示运行命令?,系统,服务,状态,信息,工具,数据,电脑,标准,管理,时间,如何查看linux服务器运行状态?1、linux怎么查看服务器状态?我们一起显示linux网卡命令行?
显示linux网卡命令行?,系统,信息,工具,网络,服务,电脑,网卡,技术指标,地址,命令,怎么在Linux系统中查看和编辑网卡信息?1、首先第一步根据下图linux命令显示内容?
linux命令显示内容?,标准,系统,数据,命令,百度,实时,时间,信息,文件,内容,linux命令怎样把lic文件显示出来1、打开一个 terminal,(就是终端程序),linux常用显示命令?
linux常用显示命令?,工作,地址,系统,信息,管理,命令,目录,标准,功能,常用命令,linux系统常用操作命令1、linux常用命令有pwd命令、cd命令、lslinux用命令显示账号?
linux用命令显示账号?,密码,系统,信息,地址,电脑,名字,用户,命令,用户名,用户信息,linux怎么查看用户名及密码?方法/步骤首先,打开linux客户端