使用doublebuffered来解决VB.net中datagridview数据显示和滚动慢和卡顿的问题

最近做一个小数据库管理软件,dataset中有一个交vb.net教程
叉查询填充的表,有3000多行,30多列,把这个表bindingsource绑定到datagridview控件上时,出现了卡顿,具体就是加载数据时看到明显的数据一行行显示出来,用鼠标滚动表时,也是一行行的刷新,虽然刷数很快,但用起来很不顺畅。没道理是这样的,在ACCEss中显示一个同样的查询c#教程)表,就非常流畅,没一点卡顿,我开头以为是因为access中是只读的原因,但把datagridview设成只读一样卡,又按网上的说法把autosizecolumnsmode设成none(本来默认就是none)的,还是一样,最后只有一条路了,设置doublebuffered属性,看看双缓冲有没有效果,可恶的是这个属性是PROTECTED的,无法直接设置,网python基础教程上的方案都是C++的,没办法死马当活马医,找了一个用VB.net照描:http://www.cnblogs.com/qingteng1983/archive/2010/05/09/1730905.html。

在form1_load开头加入:

Dim type As Type = DataGridView1.GetType()
Dim pi As PropertyInfo = type.GetProperty("DoubleBuffered", System.Reflection.BindingFlags.Instance or System.Reflection.BindingFlags.NonPublic)
pi.SetValue(DataGridView1, True, Nothing)

问题解决!

不过,我还是感觉没有access中那样的流畅,也没有SQL查询结果中流畅,不知是不是心理作用。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
将 `TextBox` 控件放入 `PictureBox` 控件可能会导致闪烁问题,因为 `PictureBox` 控件是用于显示图像的,而不是用于显示文本的。如果您想在 `PictureBox` 控件显示文本,推荐使用 `Label` 控件或自定义绘制。 如果您一定要使用 `TextBox` 控件,并且想要解决闪烁问题,可以尝试以下方法: 1. 使用双缓冲技术,将 `PictureBox` 控件和 `TextBox` 控件都设置为 `DoubleBuffered` 属性为 `True`。 2. 在 `PictureBox` 控件的 `Paint` 事件,将 `TextBox` 控件绘制到 `PictureBox` 控件上,而不是将其作为 `PictureBox` 控件的子控件。 下面是一个简单的示例代码,演示了如何将 `TextBox` 控件放置在 `PictureBox` 控件,并使用双缓冲技术来解决闪烁问题: ``` Private Sub PictureBox1_Paint(sender As Object, e As PaintEventArgs) Handles PictureBox1.Paint Dim bmp As New Bitmap(PictureBox1.Width, PictureBox1.Height) Dim g As Graphics = Graphics.FromImage(bmp) ' 双缓冲技术 PictureBox1.DoubleBuffered = True TextBox1.DoubleBuffered = True ' 绘制背景 g.Clear(Color.White) ' 绘制文本框 Dim tbRect As New Rectangle(10, 10, 100, 20) TextBox1.DrawToBitmap(bmp, tbRect) ' 绘制图像 e.Graphics.DrawImage(bmp, 0, 0) ' 清理资源 g.Dispose() bmp.Dispose() End Sub ``` 请注意,在上面的代码示例,我们将 `TextBox` 控件绘制到一个 `Bitmap` 对象,然后再将该图像绘制到 `PictureBox` 控件上。这可以避免在 `PictureBox` 控件上直接绘制 `TextBox` 控件时出现的闪烁问题

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值