DataGridViewで右クリックで選択状態にし、かつコンテキストメニューを表示

.NETのDataGridView上で右クリックを行った場合、左クリックの時のような選択状態にならない・・・。

これの対応は、CellMouseClickイベントで行う。以下VBでの例

Private Sub dgvData_CellMouseClick(sender As System.Object, e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles dgvData.CellMouseClick

If (e.RowIndex < 0) Then Return
If (e.ColumnIndex < 0) Then Return

' 右ボタンクリック判定
If e.Button = MouseButtons.Right Then

' クリックされたセルの特定
Dim cell As DataGridViewCell = dgvData(e.ColumnIndex, e.RowIndex)

' セルを選択状態にする。
cell.Selected = True

End If

End Sub

選択状態を作り出すだけなら上記のCellMouseClickイベントで良いけど、ここで同時にContextMenuStripの表示を行いたい場合は、
CellMouseClickイベントではなく、CellContextMenuStripNeededイベントを使用する。

Private Sub dgvData_CellContextMenuStripNeeded(sender As System.Object, e As System.Windows.Forms.DataGridViewCellContextMenuStripNeededEventArgs) Handles dgvData.CellContextMenuStripNeeded

If (e.RowIndex < 0) Then Return
If (e.ColumnIndex < 0) Then Return

' クリックされたセルの特定
Dim cell As DataGridViewCell = dgvData(e.ColumnIndex, e.RowIndex)

' セルを選択状態にする
cell.Selected = True

End Sub

後は、それぞれ必要な処理を入れておけばいい。