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
------------------------------------------------------------------------------------------------
たったこれだけ。
ご参考になれば幸いです。
---------------------------------------------------------
ブログ記事についてのお問い合わせは「質疑応答 掲示板」で・・・
ここをクリックして、北窓舎のサイトにもお立ち寄りください・・・
さらに便利に使うために・・・
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
------------------------------------------------------------------------------------------------
たったこれだけ。
ご参考になれば幸いです。
---------------------------------------------------------
ブログ記事についてのお問い合わせは「質疑応答 掲示板」で・・・
ここをクリックして、北窓舎のサイトにもお立ち寄りください・・・