Дважды щелкните строку DataGridView?
Я использую vb.net и DataGridView на winform.
когда пользователь дважды щелкает по строке, я хочу что-то сделать с этой строкой. Но как я могу узнать, нажал ли пользователь на строку или просто в любом месте сетки? Если я использую DataGridView.CurrentRow
затем, если выбрана строка и пользователь нажал в любом месте сетки текущая строка покажет выбранную, а не где пользователь нажал (который в этом случае не будет в строке, и я хотел бы игнорировать его).
6 ответов
попробовать CellMouseDoubleClick
событие...
Private Sub DataGridView1_CellMouseDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles DataGridView1.CellMouseDoubleClick
If e.RowIndex >= 0 AndAlso e.ColumnIndex >= 0 Then
Dim selectedRow = DataGridView1.Rows(e.RowIndex)
End If
End Sub
это будет срабатывать, только если пользователь фактически находится над ячейкой в сетке. The If
проверьте фильтры дважды щелкните по селекторам строк и заголовкам.
используйте Datagridview DoubleClick Evenet, а затем Datagrdiview1.selectedrows[0].ячейка ["CellName"] для получения значения и процесса.
ниже пример показывает запись клиентов при двойном щелчке по выбранной строке.
private void dgvClientsUsage_DoubleClick (отправитель объекта, EventArgs e) {
if (dgvClientsUsage.SelectedRows.Count < 1)
{
MessageBox.Show("Please select a client");
return;
}
else
{
string clientName = dgvClientsUsage.SelectedRows[0].Cells["ClientName"].Value.ToString();
// show selected client Details
ClientDetails clients = new ClientDetails(clientName);
clients.ShowDialog();
}
}
использовать DataGridView.HitTest в обработчике двойного щелчка, чтобы узнать, где произошел щелчок.
Я бы использовал DoubleClick событие DataGridView. Это будет срабатывать, по крайней мере, только когда пользователь дважды щелкает в сетке данных - вы можете использовать MousePosition, чтобы определить, какую строку (если таковая имеется) пользователь дважды щелкнул.
вы можете попробовать что-то вроде этого.
Private Sub DataGridView1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles DataGridView1.DoubleClick
For index As Integer = 0 To DataGridView1.Rows.Count
If DataGridView1.Rows(index).Selected = True Then
'it is selected
Else
'is is not selected
End If
Next
End Sub
имейте в виду, что я не мог проверить это, потому что у меня не было данных для заполнения моего DataGridView.
вы можете попробовать это:
Private Sub grdview_CellDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles grdview.CellDoubleClick
For index As Integer = 0 To grdview.Rows.Count - 1
If e.RowIndex = index AndAlso e.ColumnIndex = 1 AndAlso grdview.Rows(index).Cells(1).Value = "" Then
MsgBox("Double Click Message")
End If
Next
End Sub