web-dev-qa-db-ja.com

DataGridView行をダブルクリックしますか?

Winformでvb.netとDataGridViewを使用しています。

ユーザーが行をダブルクリックすると、この行で何かをしたいと思います。しかし、ユーザーが行をクリックしたのか、グリッドのどこをクリックしたのかを知るにはどうすればよいですか? DataGridView.CurrentRowを使用すると、行が選択され、ユーザーがグリッド上の任意の場所をクリックした場合、現在の行にはユーザーがクリックした場所ではなく、選択された場所が表示されます(この場合、行ではなく、それを無視します)。

12
Alex

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

これは、ユーザーがグリッドのセルの上に実際にいる場合にのみ発生します。 Ifチェックは、行セレクターとヘッダーのダブルクリックを除外します。

26
codeConcussion

Datagridview DoubleClick Evenetを使用し、次にDatagrdiview1.selectedrows [0] .cell ["CellName"]を使用して値を取得し、処理します。

以下の例は、選択した行をダブルクリックしたときにクライアントが記録することを示しています。

private void dgvClientsUsage_DoubleClick(object sender、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

ダブルクリックハンドラーで DataGridView.HitTest を使用して、クリックが発生した場所を確認します。

2
liggett78

あなたはこれを試すことができます:

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

DataGridViewDoubleClick イベントを使用します。これは、少なくともユーザーがデータグリッドをダブルクリックしたときにのみ発生します。MousePositionを使用して、ユーザーがダブルクリックした行(ある場合)を判別できます。

0
davisoa

このようなものを試すことができます。

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に入力するデータがないため、これをテストできなかったことに留意してください。

0
giodamelio