トップ回答者
Datagridview上での右クリック

質問
回答
-
以下は、右クリックしたセルのバックカラーを緑色に変えるサンプルコードです。
Private Sub dataGridView1_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles dataGridView1.MouseDown
If e.Button = Windows.Forms.MouseButtons.Right Then
Dim hit As DataGridView.HitTestInfo = dataGridView1.HitTest(e.X, e.Y)
If hit.Type = DataGridViewHitTestType.Cell Then
dataGridView.Rows(hit.RowIndex).Cells(hit.ColumnIndex).Style.BackColor = Color.Green
End If
End If
End Sub
-
TH01 さんからの引用
MouseClick ではなく CellMouseClick イベントでした。
こちらには e.ColumnIndex 等があります。大変失礼しました。
お~、素晴らしい! CellMouseClick イベント! 便利なイベントが追加されてるんですね。これは見逃してました。
このイベントを使えば、非常に簡単ですね。DataGridViewはDataGridに比べて、みんながやりたいけど苦労しそうなところがずいぶん改善されているという印象がありますが、ここもちゃんとフォローされていたんですね。
勉強になりました。ありがとうございました。m(_ _)m
すべての返信
-
以下は、右クリックしたセルのバックカラーを緑色に変えるサンプルコードです。
Private Sub dataGridView1_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles dataGridView1.MouseDown
If e.Button = Windows.Forms.MouseButtons.Right Then
Dim hit As DataGridView.HitTestInfo = dataGridView1.HitTest(e.X, e.Y)
If hit.Type = DataGridViewHitTestType.Cell Then
dataGridView.Rows(hit.RowIndex).Cells(hit.ColumnIndex).Style.BackColor = Color.Green
End If
End If
End Sub
-
TH01 さんからの引用 MouseClick イベントハンドラで引数 e.Button、e.ColumnIndex、e.RowIndex を使う手もあると思います。
# というか、trapemiya さんがそう書かれていないので、e.ColumnIndex 等を使うことに何か問題があるのかと心配になっています...。(^^; Mouse ときたら HitTest ですかね。
.NET 2.0で追加されたMouseClickイベントは、確かに右クリックでも発生するんですが、e.ColumnIndex、e.RowIndex は無く、やはりHitTestしないとダメなんじゃないかと思います。
CellClickならe.ColumnIndex、e.RowIndexが取れますが、このイベントは右クリックでは発生しないんですよね。 -
TH01 さんからの引用
MouseClick ではなく CellMouseClick イベントでした。
こちらには e.ColumnIndex 等があります。大変失礼しました。
お~、素晴らしい! CellMouseClick イベント! 便利なイベントが追加されてるんですね。これは見逃してました。
このイベントを使えば、非常に簡単ですね。DataGridViewはDataGridに比べて、みんながやりたいけど苦労しそうなところがずいぶん改善されているという印象がありますが、ここもちゃんとフォローされていたんですね。
勉強になりました。ありがとうございました。m(_ _)m