DataGridView マウスをもっていくだけで編集モード

http://silent-diary.at.webry.info/theme/15e75af35e.html

 

  ユーザーコントロールをDataGridViewのセルに表示させるところまではできた。でも、ユーザーコントロールに置いているボタンをクリックするためには、セルをクリックしてアクティブに→もう一回クリックして編集モードにする必要があって、結局ボタンをクリックするために3回もクリックしないといけないということになって詰まってた。

 

  DataGridViewのCellMouseEnterイベントで、その引数e As DataGridViewCellEventArgsからセルの列と行の番号が取れる。まず、その番号からアクティブにするセルを指定する。つまり、マウスカーソルが乗ったセルがアクティブになる。その後にBeginEditメソッドでDataGridViewを編集モードにすると、マウスカーソルが乗っただけでそのセルのボタンがクリックできる状態になる。If e.ColumnIndex >= 0 And e.RowIndex >= 0 then としているのは、行や列のヘッダーにマウスカーソルが乗ったときはその値が-1になって、その番号のセルをアクティブにしようとしてエラーになるから。

 

  多分、これで解決できたのではないだろうか。

 

    Private Sub DataGridView1_CellMouseEnter(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellMouseEnter
        If e.ColumnIndex >= 0 And e.RowIndex >= 0 Then
            DataGridView1.CurrentCell = DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex)
        End If

        DataGridView1.BeginEdit(False)

    End Sub