2010-08-09 2 views
0

У меня есть datagridview (unbound). Поля - это имя, фамилия и номер телефона и поле флажка.Захват значения DataGridView CheckBox в VB.Net

В этом DataGridView есть десять строк.

Существует кнопка OK

Мне нужно, чтобы получить сообщение о показе, который проверил ряды пользователей. Сообщение должно появиться, когда пользователь нажимает кнопку OK. В цикле может быть несколько сообщений, проверяющих каждую строку один за другим.

Я не могу получить это сообщение. Я попробовал следующий код в кнопке OK:

Dim strCB As String = dgvChooseQs.Rows(0).Cells(3).Value.ToString 

Ячейка (3) является моей ячейкой. Не рассматривайте Rows (0), на данный момент я просто проверяю значение в строке 0

Спасибо за помощь.

Фуркан

ответ

0

Вам нужно сделать что-то вроде этого:

if ctype(dgvChooseQs.Rows(0).findcontrol("whateverYourCheckBoxIsNamed"), checkbox).checked then 

'throw the message 

end if 
2

Не использовать индекс клеток. Ваш столбец флажка должен иметь имя, чтобы вы его использовали.

В противном случае, что вы хотите сделать, было бы что-то вроде этого

 

For each oRow as DataGridViewRow in dgvChooseQs.Rows 

    If oRow.Cells("ColNamE").Value = True then 
    'do whatever you need to do. 
    End if 

Next 

Если вы чувствуете, что вам нужно, чтобы бросить столбец, то вы можете использовать CType, но тип DataGridViewCheckBoxCell, не CheckBox.

1

Вы можете разыграть значение ячейки Boolean, а затем проверить его следующим образом:

Dim RowIndex As Integer = ... 
Dim ColumnIndex As Integer = ... 

Dim IsTicked As Boolean = CBool(DataGridView1.Rows(RowIndex).Cells(ColumnIndex).Value) 

If IsTicked Then 
    MessageBox.Show("You ticked the box.") 
Else 
    MessageBox.Show("You cleared the box.") 
End If 
0

Я нашел простое решение.

Просто измените фокус ячейки после нажатия на ячейку.

Private Sub DGV_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles DGV.CellContentClick 
    If e.ColumnIndex = "Here checkbox column id or name" Then 
     DGV.Item(e.ColumnIndex, e.RowIndex + 1).Selected = True 
     'Here your code 
     MsgBox DGV.Item(e.ColumnIndex, e.RowIndex).Value 
    End If 
End Sub 

Не забудьте проверить, существует ли столбец вашего индекса (ckeckbox + 1).

0

Установите тип сетки в dataGridView в 'DataGridViewCheckBoxXColumn' вместо DataGridViewCheckBoxColumn.

все проблемы будут решены

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