2016-07-15 4 views
0

У меня есть три столбца, первый столбец - текстовое поле, второй столбец - флажок, третий - текстовое поле. Я хочу добавить событие click в третий столбец, где, если пользователь нажмет на эту ячейку, он автоматически отметит и отметит второй столбец столбца этой строки. Я пробовал это, но он не работает.Добавить обработчик события click click для datagridview?

AddHandler datagridview1.MouseClick, AddressOf form1.datagridview1_MouseClick 

ответ

0

просто нужно переключить тип ручки на подпрограмме "Ручка DataGridView1.CellClick". Пример:

Private Sub DataGridView1_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellClick 
    Dim tempView = DirectCast(sender, DataGridView) 

    For Each cell As DataGridViewTextBoxCell In tempView.SelectedCells 
     If cell.ColumnIndex = 1 Then 
      Dim tempCheckBoxCell As DataGridViewCheckBoxCell = tempView("column1", cell.RowIndex) 
      tempCheckBoxCell.Value = True 
     End If 
    Next 
End Sub 

Кроме того, быстрое примечание - вам нужно будет настроить тип клеток, найденный в течение каждого цикла в любой тип клеток, который вы используете; в примере я столкнулся с2 в простой ячейке типа текстового поля.

+0

Как я могу снять флажок? –

+0

Добавьте условие, в котором tempCheckboxCell.value = true, чтобы проверить true, если оно в настоящее время ложно, и false, если true –

+0

сообщите мне, если это поможет, или если вам нужен пример –

0

Посмотрите на событие CellClick. https://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.cellclick(v=vs.110).aspx

Что-то вроде:

Public Class Form1 

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load 
    With DataGridView1 
     .Rows.Add({"John Smith", 1}) 
     .Rows.Add({"Jane Doe", 0}) 
    End With 
    AddHandler DataGridView1.CellClick, AddressOf DataGridView1_CellClick 
End Sub 

Private Sub DataGridView1_CellClick(sender As Object, e As DataGridViewCellEventArgs) 
    If e.RowIndex < 0 Then Exit Sub 

    Dim dgv As DataGridView = CType(sender, DataGridView) 
    If Not TypeOf dgv.Rows(e.RowIndex).Cells(e.ColumnIndex) Is DataGridViewCheckBoxCell Then Exit Sub 

    Dim cell As DataGridViewCheckBoxCell = CType(dgv.Rows(e.RowIndex).Cells(e.ColumnIndex), DataGridViewCheckBoxCell) 

    cell.Value = Not CBool(cell.Value) 
    dgv.EndEdit() 
End Sub 

End Class