Winformでvb.netとDataGridViewを使用しています。
ユーザーが行をダブルクリックすると、この行で何かをしたいと思います。しかし、ユーザーが行をクリックしたのか、グリッドのどこをクリックしたのかを知るにはどうすればよいですか? DataGridView.CurrentRow
を使用すると、行が選択され、ユーザーがグリッド上の任意の場所をクリックした場合、現在の行にはユーザーがクリックした場所ではなく、選択された場所が表示されます(この場合、行ではなく、それを無視します)。
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
チェックは、行セレクターとヘッダーのダブルクリックを除外します。
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();
}
}
ダブルクリックハンドラーで DataGridView.HitTest を使用して、クリックが発生した場所を確認します。
あなたはこれを試すことができます:
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
DataGridView の DoubleClick イベントを使用します。これは、少なくともユーザーがデータグリッドをダブルクリックしたときにのみ発生します。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に入力するデータがないため、これをテストできなかったことに留意してください。