none
关于在多线程下datagridview滚动条问题 RRS feed

  • 问题

  • 在多线程中为Datagridview填充数据,填充后滚动条失效,查询后得知需要使用invoke进行委托,但帮助文档内容较简单,不太明白,不知能否给个例子,谢谢
    2014年12月11日 8:52

答案

  • Imports System.Threading
    
    Public Class Form1
        Private table As DataTable
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            table = New DataTable()
            table.Columns.Add("C1")
            table.Columns.Add("C2")
            DataGridView1.DataSource = table
        End Sub
    
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim t As Thread
            t = New Thread(AddressOf AddData)
            t.IsBackground = True
            t.Start()
    
        End Sub
    
        Private Sub AddData(ByVal state As Object)
            Me.Invoke(Sub()
                          For i As Int32 = 0 To 9
                              Dim row As DataRow = table.NewRow()
                              row(0) = i.ToString()
                              row(1) = (i + 100).ToString()
                              table.Rows.Add(row)
                          Next
                      End Sub)
        End Sub
    
    
    End Class
    試試這樣做, 在 AddData 中使用Control.Invoke

    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。


    2014年12月11日 11:09