2015-02-24 4 views
0

У меня есть datagridView (dgv) на активной вкладке (tabControl), которая заполнена данными, полученными из веб-службы, когда я запускаю запрос, я создаю отдельный поток, который назначит данные в dgv в его событии RunWorkerCompleted, но затем dgv не выбирает строку, когда я нажимаю на нее, чтобы правильно работать, я должен выбрать другую вкладку и снова выбрать вкладку, содержащую этот dgv consulting web serviceВосстановить фокус после завершения фоновой задачи

rows can't be selected until i change tab

-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 
+0

Так ** в чем собственно вопрос ** Все, что я вижу это DataGridView не выбрать строку при нажатии на нее?. Вы думали о том, чтобы добавить в свой класс много доступных событий: DataGridViewCellMouseClick или другое подобное событие, чтобы увидеть, удалено ли это при нажатии; это было бы отличным началом, чтобы увидеть, если он попал, поскольку вы не упомянули, как вы протестировали это, чтобы подтвердить. Возможно также, что вы просто проглатываете исключение, которое может блокировать основной поток и, следовательно, почему он не фокусируется? Не могли бы вы предоставить какой-то код, где вы справляетесь? – Codexer

ответ

0

попытка объявления конец:

ProgressBar1.Visible = False 

     'TabControl name with Ficha Alumno 
      Me.TabControl1.SelectedIndex = 0 

     dgvAlumnos.DataSource = TablaFAlumno 
     dvgAlumnos.Select() 

    End Sub 
+0

это просто выберите один ряд (синий фон), но все еще не отвечает –

Смежные вопросы