web-dev-qa-db-fra.com

Double-cliquez sur DataGridView Row?

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).

12
Alex

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.

26
codeConcussion

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();

        }
    }
3
user1718530

Utilisez datagridview.hittest dans le gestionnaire de double-clic pour savoir où le clic est arrivé.

2
liggett78

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

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.

0
davisoa

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.

0
giodamelio