画面イメージ
注意点
- コンテキストメニューは右クリック時に発生する
- コンテキストメニューは右クリック時に発生するため、CellClickイベントでは発火しない
- CellMouseDownに右クリックの条件を追加することでも発火するが、
コンテキストメニューを提供することに特化したイベント(CellContextMenuStripNeeded)を
使う方が意図が明確になる
セル選択時にコンテキストメニューを表示する
VB
Private Sub DataGridView1_CellContextMenuStripNeeded(sender As Object, e As DataGridViewCellContextMenuStripNeededEventArgs) Handles DataGridView1.CellContextMenuStripNeeded
'ヘッダの場合、スキップ
If e.RowIndex < 0 Then Return
If e.ColumnIndex < 0 Then Return
'選択セルにコンテキストメニューを設定
Dim menu As New ContextMenuStrip()
menu.Items.Add("出社")
menu.Items.Add("在宅")
menu.Items.Add("休暇")
e.ContextMenuStrip = menu
End Sub
動作確認用コード
VB
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim dt As New DataTable
With dt
.Columns.Add("月曜日", GetType(String))
.Columns.Add("火曜日", GetType(String))
.Columns.Add("水曜日", GetType(String))
.Columns.Add("木曜日", GetType(String))
.Columns.Add("金曜日", GetType(String))
.Rows.Add("")
.Rows.Add("")
.Rows.Add("")
.Rows.Add("")
.Rows.Add("")
End With
With DataGridView1
.DataSource = dt
.AllowUserToAddRows = False
End With
End Sub
コメント