У меня есть datagridView (dgv) на активной вкладке (tabControl), которая заполнена данными, полученными из веб-службы, когда я запускаю запрос, я создаю отдельный поток, который назначит данные в dgv в его событии RunWorkerCompleted, но затем dgv не выбирает строку, когда я нажимаю на нее, чтобы правильно работать, я должен выбрать другую вкладку и снова выбрать вкладку, содержащую этот dgv Восстановить фокус после завершения фоновой задачи
-The DGV еще реагирует на cellContentClick события код:
Private Sub backgroundWorker1_DoWork(sender As System.Object, e As DoWorkEventArgs) Handles BackgroundWorker1.DoWork
Dim worker As BackgroundWorker = CType(sender, BackgroundWorker)
Try
If UCA1.getAlumnos(codCarrrera, anio, ciclo, carnet_opc).alumnosArray IsNot Nothing Then
For i As Integer = 0 To UCA1.getAlumnos(codCarrrera, anio, ciclo, carnet_opc).alumnosArray.Length - 1
Dim a As sv.edu.uca.wsprb.alumnos = UCA1.getAlumnos(codCarrrera, anio, ciclo, carnet_opc).alumnosArray(i)
'here i add the rows
'TablaFAlumno.Rows.Add(...)
If i < 10 Then
BackgroundWorker1.ReportProgress(10)
End If
Next
Else
TablaFAlumno.Rows.Clear()
End If
Catch ex As System.Net.WebException
MessageBox.Show("->" + ex.Message)
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
Private Sub backgroundWorker1_ProgressChanged(sender As System.Object, e As ProgressChangedEventArgs) Handles BackgroundWorker1.ProgressChanged
If ProgressBar1.Value = 0 Then
ProgressBar1.Visible = True
End If
If ProgressBar1.Value < 100 Then
ProgressBar1.Value += 10
End If
End Sub
Private Sub backgroundWorker1_RunWorkerCompleted(sender As System.Object, e As RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted
If e.Error IsNot Nothing Then
MessageBox.Show("E -->" + e.Error.Message)
ElseIf e.Cancelled = True Then
ProgressBar1.Visible = False
MessageBox.Show("C -->" + e.Error.Message)
End If
ProgressBar1.Visible = False
dgvAlumnos.DataSource = TablaFAlumno
End Sub
Так ** в чем собственно вопрос ** Все, что я вижу это DataGridView не выбрать строку при нажатии на нее?. Вы думали о том, чтобы добавить в свой класс много доступных событий: DataGridViewCellMouseClick или другое подобное событие, чтобы увидеть, удалено ли это при нажатии; это было бы отличным началом, чтобы увидеть, если он попал, поскольку вы не упомянули, как вы протестировали это, чтобы подтвердить. Возможно также, что вы просто проглатываете исключение, которое может блокировать основной поток и, следовательно, почему он не фокусируется? Не могли бы вы предоставить какой-то код, где вы справляетесь? – Codexer