まず、悪い英語を残念に思います。別のスレッドから呼び出すときにVB.NETのDatagridviewが例外をスローしました
私の問題は、別のスレッドからデータをロードするときに「オブジェクトのインスタンスがオブジェクトのインスタンスに設定されていません」という原因です。
Private Sub GetData(ByVal startRecord As Integer, ByVal maxRecord As Integer)
Dim ds As DataSet = New DataSet()
Dim da As MySqlDataAdapter = New MySqlDataAdapter("select * from my_data", SqlCon)
Try
da.Fill(ds, startRecord, maxRecord, "my_data")
ds.Tables("my_data").DefaultView.AllowNew = False
dgv.DataSource = ds.Tables("my_data")
For Each col As Object In dgv.Columns
If TypeOf col Is DataGridViewCheckBoxColumn Then
DirectCast(col, DataGridViewCheckBoxColumn).Visible = False
ElseIf TypeOf col Is DataGridViewImageColumn Then
DirectCast(col, DataGridViewImageColumn).Visible = False
ElseIf TypeOf col Is DataGridViewTextBoxColumn Then
Dim tbc As DataGridViewTextBoxColumn = CType(col, DataGridViewTextBoxColumn)
If tbc.Name = "no" Then
tbc.Width = 40
tbc.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
tbc.HeaderText = "No"
ElseIf tbc.Name = "ID" Then
tbc.Width = 110
tbc.HeaderText = "ID"
ElseIf tbc.Name = "name" Then
tbc.Width = 290
tbc.HeaderText = "Name"
ElseIf tbc.Name = "Address" Then
tbc.Width = 230
tbc.HeaderText = "Address"
Else
tbc.Visible = False
End If
End If
Next
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
問題はここにある:
dgv.DataSource = ds.Tables("my_data")
だから、私のコードの何が問題なのです。ここ
は私のコードですか?マルチスレッドの方法から呼び出すときには常にエラーが発生しますが、ボタンを置くとうまくいきます。
ありがとうございます!それは今働いている – Navhi