none
Datagridview上での右クリック RRS feed

  • 質問

  • VB2005で開発しています。

    DatagridView上で、右クリックした際にどの行or列で右クリックしたか知りたいので

    すが調べてみたのですがわかりません。どうか宜しくお願い致します。

     

    2006年10月3日 8:07

回答

  • 以下は、右クリックしたセルのバックカラーを緑色に変えるサンプルコードです。

     

        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

    2006年10月3日 10:00
    モデレータ
  •  TH01 さんからの引用

    MouseClick ではなく CellMouseClick イベントでした。
    こちらには e.ColumnIndex 等があります。大変失礼しました。

    お~、素晴らしい! CellMouseClick イベント! 便利なイベントが追加されてるんですね。これは見逃してました。
    このイベントを使えば、非常に簡単ですね。DataGridViewはDataGridに比べて、みんながやりたいけど苦労しそうなところがずいぶん改善されているという印象がありますが、ここもちゃんとフォローされていたんですね。
    勉強になりました。ありがとうございました。m(_ _)m

    2006年10月4日 8:46
    モデレータ

すべての返信

  • 以下は、右クリックしたセルのバックカラーを緑色に変えるサンプルコードです。

     

        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

    2006年10月3日 10:00
    モデレータ
  • MouseClick イベントハンドラで引数 e.Button、e.ColumnIndex、e.RowIndex を使う手もあると思います。
    # というか、trapemiya さんがそう書かれていないので、e.ColumnIndex 等を使うことに何か問題があるのかと心配になっています...。(^^;  Mouse ときたら HitTest ですかね。
    2006年10月4日 4:54
  •  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が取れますが、このイベントは右クリックでは発生しないんですよね。

    2006年10月4日 7:08
    モデレータ
  • あれ、っと思って確認すると確かに仰るとおりで、狐につままれた気分でしたが、わかりました。
    MouseClick ではなく CellMouseClick イベントでした。
    こちらには e.ColumnIndex 等があります。大変失礼しました。

    2006年10月4日 7:27
  •  TH01 さんからの引用

    MouseClick ではなく CellMouseClick イベントでした。
    こちらには e.ColumnIndex 等があります。大変失礼しました。

    お~、素晴らしい! CellMouseClick イベント! 便利なイベントが追加されてるんですね。これは見逃してました。
    このイベントを使えば、非常に簡単ですね。DataGridViewはDataGridに比べて、みんながやりたいけど苦労しそうなところがずいぶん改善されているという印象がありますが、ここもちゃんとフォローされていたんですね。
    勉強になりました。ありがとうございました。m(_ _)m

    2006年10月4日 8:46
    モデレータ