首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DataGridView ScrollBar错误

DataGridView ScrollBar错误
EN

Stack Overflow用户
提问于 2014-02-22 09:11:40
回答 1查看 429关注 0票数 0

当我获得DataGridView的数据时,我的表单会冻结,直到While循环完成,但是之后我的滚动条就可以正常工作了。我试着给Application.DoEvents();打电话,但也不起作用。

如果我在线程中获取数据,那么我的表单不会冻结,但在While完成后,滚动条将禁用且不起作用。我尝试了一个BackgroundWorker,但滚动条在使用时也有问题。

代码语言:javascript
复制
Private Sub dg()
    myth = New Threading.Thread(AddressOf dgd)
    myth.IsBackground = True
    myth.Start()
End Sub

Private Sub dgd()
    Dim x As Integer
    If DataGridView1.Rows.Count = 0 Then x = 0 Else x = DataGridView1.Rows.Count
    Try
        Dim conn35a As New OleDbConnection("connstring")
        Dim cmd35a As New OleDbCommand
        cmd35a.CommandText = "Select count(*) from asd where downur Is Null"
        cmd35a.CommandType = CommandType.Text
        cmd35a.Connection = conn35a
        conn35a.Open()
        Dim returnValueaa As Integer = cmd35a.ExecuteScalar()
        conn35a.Close()
        Dim komut As String = "Select * from asd where downur Is Null"
        Dim conn2 As New OleDbConnection("connstring")
        conn2.Open()
        Dim cmd2 As New OleDbCommand(komut, conn2)
        Dim dr2 As OleDbDataReader = cmd2.ExecuteReader
        If dr2.HasRows Then
            While dr2.Read
                Dim conn35 As New OleDbConnection("connstring")
                Dim cmd35 As New OleDbCommand
                cmd35.CommandText = "select count(*) from grid where ur = '" + dr2.Item("ur").ToString + "'"
                cmd35.CommandType = CommandType.Text
                cmd35.Connection = conn35
                conn35.Open()
                Dim returnValuea = cmd35.ExecuteScalar()
                conn35.Close()
                If returnValuea = 0 Then
                    DataGridView1.Rows.Add()
                    DataGridView1.Rows.Item(x).Cells(0).Value = x + 1
                    DataGridView1.Rows.Item(x).Cells(4).Value = "ID"
                    DataGridView1.Rows.Item(x).Cells(5).Value = dr2.Item("ur").ToString
                    DataGridView1.Rows.Item(x).Cells(6).Value = dr2.Item("ch").ToString
                    DataGridView1.Rows.Item(x).Cells(7).Value = dr2.Item("ti").ToString
                    DataGridView1.Rows.Item(x).Cells(8).Value = ".."
                    Dim client2 As New WebClient
                    Dim url As String = dr2.Item("pic").ToString
                    DataGridView1.Rows.Item(x).Cells(12).Value = New Bitmap(New MemoryStream(client2.DownloadData(url)))
                    DataGridView1.Rows.Item(x).Cells(13).Value = dr2.Item("vi")
                    DataGridView1.Rows.Item(x).Cells(14).Value = dr2.Item("su").ToString()
                    Dim con4 As New OleDbConnection("connstring") 
                    con4.Open()
                    Dim cmd5 = New OleDbCommand("INSERT INTO grid (ur) VALUES (@ur)", con4)
                    cmd5.CommandType = CommandType.Text
                    cmd5.Parameters.Add("@ur", OleDbType.VarChar, 500).Value = dr2.Item("ur").ToString
                    cmd5.ExecuteNonQuery()
                    con4.Close()
                    x += 1
                End If
            End While
        End If
    Catch ex As Exception
        MsgBox(ex.Message)
    End Try
End Sub
EN

回答 1

Stack Overflow用户

发布于 2014-08-30 01:17:39

我也有同样的问题。

我通过删除Thread并直接调用该方法解决了这个问题

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21948275

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档