J'utilise VB.NET et DataGridView sur une winform.
Lorsqu'un utilisateur clique sur une ligne, je veux faire quelque chose avec cette ligne. Mais comment puis-je savoir si l'utilisateur a cliqué sur une rangée ou n'importe où dans la grille? Si j'utilise DataGridView.CurrentRow
Ensuite, si une ligne est sélectionnée et que l'utilisateur cliqué sur la grille de la grille, la ligne actuelle affichera la sélection et non où l'utilisateur a cliqué sur (dans ce cas ne serait pas sur une ligne et je voudrais l'ignorer).
Essayez le CellMouseDoubleClick
événement ...
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
Cela n'intraitera que si l'utilisateur est effectivement sur une cellule dans la grille. Le If
Vérifier les filtres de double clic sur les sélecteurs et les en-têtes de la ligne.
Utilisez DataGridView DoubleClick Evelet, puis DataGRDIView1.SelectedSrows [0] .Cell ["CellName"] pour obtenir la valeur et le processus.
Sous l'exemple indique que les clients enregistrent en double clic sur la ligne sélectionnée.
void privé DGVCLIGIQUESUSAGE_DOUBLECLICK (EXPÉDER D'OBJECTIVEMENT, 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();
}
}
Utilisez datagridview.hittest dans le gestionnaire de double-clic pour savoir où le clic est arrivé.
Vous pouvez essayer ceci:
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
J'utiliserais l'événement DoubleClick du DataGridView . Cela ne tire au moins que lorsque l'utilisateur double clic sur la grille de données - vous pouvez utiliser la mousette pour déterminer quelle ligne (le cas échéant) l'utilisateur a double-cliqué sur.
Vous pouvez essayer quelque chose comme ça.
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
N'oubliez pas que je ne pouvais pas tester cela parce que j'ai don des données pour remplir mon DataGridView.