代码之家  ›  专栏  ›  技术社区  ›  Michael Eakins

如何重写Microsoft的DataGridView以允许在VB.NET中进行后台缓冲?

  •  11
  • Michael Eakins  · 技术社区  · 14 年前

    我的DataGridView在加载时闪烁并且非常慢。我从Microsoft反射了datgridview,发现有一个back buffer属性在winform中不可见。如何设置此属性?

    4 回复  |  直到 14 年前
        1
  •  8
  •   Jimmie Clark    14 年前

    出于某种原因,微软将DoubleBuffered属性放在了那里,但不允许我们打开它。您可以使用子类化来劫持系统。

    Public Class MyDataGridView
       Inherits DataGridView
    
       Sub New()  
          MyBase.New()
    
          Me.DoubleBuffered = True
       End Sub
    End Class
    

    在你的程序中,你可以构建它,新的类应该出现在你的工具箱中。一旦到了那里,您就可以自由地将其拖出并使用它,就好像它是一个具有更好绘图功能的普通DataGridView一样。

    希望这有帮助。

        2
  •  5
  •   TheAssassin83    14 年前

    我将使用ListView,它没有与DataGridView相同的问题。

        3
  •  4
  •   Stack Guy    14 年前

    我尽量少使用DataGridView,因为它们非常复杂。我会使用一个列表框,因为它填充得更快。

        4
  •  3
  •   FB_ME_tsSE    14 年前

    如何尝试一个列表,并将其以编程方式添加到多行文本框。这是非常快速和有效的。

     Dim tbox As New TextBox
    
        Dim bobs As New List(Of String)
    
        bobs.Add("Williams")
        bobs.Add("Stephens")
        bobs.Add("Thomas")
        bobs.Add("Brown")
        bobs.Add("Knauff")
    
        For Each str As String In dinosaurs
          tbox.Text &= str & vbNewLine ' &= ensures you add the str not overwrite the previous data/vbnewline works as a cr(carriage return) and an lf(line feed)'
        Next