北の窓から(芦田っち)

PC関連と私的雑感のブログ。
2015年7月10日、カッコ内に名前を加えました。昔の友だちに気付いてほしくて・・・

おやぢチップス (51) : MouseMove イベントで DataGridView のセル番号を取得(開発者向け)

2016-12-18 10:28:56 | おやぢチップス
DataGridView は便利なコントロールです。

さらに便利に使うために・・・
DataGridView の上にマウスが来たとき、そのセル番号(行と列)を取得する方法をご紹介。

  # DataGridView で選択されている(アクティブな)セルの行番号・列番号を取得する方法は
    検索すればすぐ見つかると思います。

    なので、ここでは選択されているセルではなく、マウスポインターの下にあるセル番号を取得します。
    (
    マウスポインターの動きに合わせ最新のセル番号を取得するために、MouseMove イベントを利用します。
    (MouseHover だと、マウスが動いても最新のセル番号が取れません)

紹介する例は、次のようになっています。
  フォーム上に DataGridView1 があります。
  左上に行・列番号を示す Label1 があります。

  実行するとこんなフォームになります。
  

コードは次のとおり。
DataGridView1 での MouseMove イベントでラベルにセル情報を表示しています。
(マウスが DataGridView1 上から離れた時にラベルの文字を消しています)

------------------------------------------------------------------------------------------------
' --- MouseMove 時:DataGridView の行・列番号をラベルに表示
Private Sub DataGridView1_MouseMove(sender As Object, e As MouseEventArgs) Handles DataGridView1.MouseMove
  Dim dgvScreenLocation As Point = Me.DataGridView1.PointToScreen(DataGridView1.Location)
  Dim tempX As Integer = DataGridView.MousePosition.X - dgvScreenLocation.X + DataGridView1.Left
  Dim tempY As Integer = DataGridView.MousePosition.Y - dgvScreenLocation.Y + DataGridView1.Top
  Dim hit As DataGridView.HitTestInfo = Me.DataGridView1.HitTest(tempX, tempY)
  ' ---
  Me.Label1.Text = "行=" & hit.RowIndex & " 列=" & hit.ColumnIndex
End Sub

' --- MouseLeave 時:ラベルのテキストをクリア
Private Sub DataGridView1_MouseLeave(sender As Object, e As EventArgs) Handles DataGridView1.MouseLeave
  Me.Label1.Text = ""
End Sub
------------------------------------------------------------------------------------------------

たったこれだけ。

ご参考になれば幸いです。

---------------------------------------------------------
ブログ記事についてのお問い合わせは「質疑応答 掲示板」で・・・


ここをクリックして、北窓舎のサイトにもお立ち寄りください・・・
コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 釈然としない・・・カジノ解... | トップ | おやぢチップス (52) : 実行... »
最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。

おやぢチップス」カテゴリの最新記事