14

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

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

4

6 に答える 6

34

イベントを試してみてください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チェックは、行セレクターとヘッダーのダブルクリックを除外します。

于 2010-10-13T04:51:16.860 に答える
4

Datagridview DoubleClick Evenet を使用してから、Datagrdiview1.selectedrows[0].cell["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();

        }
    }
于 2013-05-07T07:09:42.187 に答える
2

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

于 2010-10-13T13:33:51.077 に答える
0

これを試すことができます:

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
于 2012-03-16T11:56:37.060 に答える
0

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

于 2010-10-13T04:31:12.083 に答える
0

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

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

于 2010-10-13T04:49:26.133 に答える