間違えて DateTimePicker を先にやってしまった...
って事で今日は ContextMenuStrip のお勉強。
1.1 の時にお世話になった ContextMenu と合わせて使ってみました。
うーん一緒に実装すると、ここに書いた事だけでも随分いろんなことができるようになったもんだなぁって思いました。
ContextMenu クラスの説明にこう書いてありました。
[引用]
ContextMenuStrip では、以前のバージョンの ContextMenu コントロールの機能が置換または追加されていますが、下位互換性を維持し、必要に応じて今後も使用できるように、ContextMenu も残されています。
[/引用]
つまり、2.0 でコンテキストメニュー機能を実装する場合には、ContextMenuStrip の方を使いなさいよって事ですか。
...でも私は今日はじめて使ったのだった...
■参考文献
ContextMenuStrip クラス
ToolStripItem クラス
ToolStripMenuItem クラス
ToolStripDropDown クラス
ContextMenu クラス
MenuItem クラス
■実行画像
ContextMenuStrip
ContextMenu
Public Class ContextMenuStripTest
Private Sub ContextMenuStripTest_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'' ContextMenuStrip を使ってみる
Dim cntextStrip As ContextMenuStrip = New ContextMenuStrip
'---------- ToolStripButtonの作成 ----------
Dim tstripButton As ToolStripButton = New ToolStripButton()
cntextStrip.Items.Add(tstripButton)
' 押下時のイベントを登録
AddHandler tstripButton.Click, AddressOf ToolStripButton_Click
tstripButton.Text = "test"
tstripButton.BackColor = Color.CadetBlue
'---------- セパレータを追加する ----------
cntextStrip.Items.Add(New ToolStripSeparator)
'---------- ComboBox を追加する ----------
Dim cmbBox As ToolStripComboBox = New ToolStripComboBox
cntextStrip.Items.Add(cmbBox)
cmbBox.Items.Add("ふじこ")
cmbBox.Items.Add("エデン")
cmbBox.Items.Add("オット")
cmbBox.SelectedItem = "オット" 'オットを選択
' コンボボックス選択アイテム変更時のイベントを登録
AddHandler cmbBox.SelectedIndexChanged, AddressOf Me.ToolStripComboBox_SelectedIndexChanged
'---------- ToolStripMenuItem を 追加する ----------
Dim mnuItem As ToolStripMenuItem = New ToolStripMenuItem
mnuItem.Text = "わんくま"
cntextStrip.Items.Add(mnuItem)
'---------- おまけのボタンを作成 ----------
Dim omakeButton As ToolStripButton = New ToolStripButton()
' ToolStripMenuItem にぶらさげ
mnuItem.DropDownItems.Add(omakeButton)
' 押下時のイベントを登録
AddHandler omakeButton.Click, AddressOf ToolStripButton_Click
' 画像の設定
omakeButton.DisplayStyle = ToolStripItemDisplayStyle.ImageAndText
omakeButton.Image = New Bitmap(My.Resources.中さん)
omakeButton.ImageTransparentColor = System.Drawing.SystemColors.Control
omakeButton.Text = "中さん"
omakeButton.Size = New Size(100, 50)
Dim lblForStrip As Label = New Label
lblForStrip.Size = New Size(150, 50)
lblForStrip.Text = "ContextMenuStrip 用"
lblForStrip.BackColor = Color.LightBlue
lblForStrip.Location = New Point(10, 10)
lblForStrip.ContextMenuStrip = cntextStrip
Me.Controls.Add(lblForStrip)
'' ContextMenu を使ってみる
Dim cntext As ContextMenu = New ContextMenu
'---------- MenuItem の作成 ----------
Dim contextItem As MenuItem = New MenuItem
cntext.MenuItems.Add(contextItem)
'---------- 押下時のイベントを登録 ----------
AddHandler contextItem.Click, AddressOf MenuItem_Click
contextItem.Text = "test"
'---------- セパレータの追加 ----------
cntext.MenuItems.Add(New MenuItem("-"))
'---------- 枝分かれ MenuItem の作成 ----------
Dim edaMenuItem As MenuItem = New MenuItem
edaMenuItem.Text = "wankuma"
cntext.MenuItems.Add(edaMenuItem)
edaMenuItem.MenuItems.Add(New MenuItem("どり様", AddressOf Me.MenuItem_Click))
Dim lblForContext As Label = New Label
lblForContext.Size = New Size(150, 50)
lblForContext.Text = "ContextMenu 用"
lblForContext.BackColor = Color.LightGreen
lblForContext.Location = New Point(10, 100)
lblForContext.ContextMenu = cntext
Me.Controls.Add(lblForContext)
End Sub
Private Sub ToolStripButton_Click(ByVal sender As Object, ByVal e As EventArgs)
Dim btn As ToolStripButton = DirectCast(sender, ToolStripButton)
MessageBox.Show(btn.Text & "が押下されました")
End Sub
Private Sub MenuItem_Click(ByVal sender As Object, ByVal e As EventArgs)
Dim itm As MenuItem = DirectCast(sender, MenuItem)
MessageBox.Show(itm.Text & "が押下されました")
End Sub
Private Sub ToolStripComboBox_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs)
Dim cmb As ToolStripComboBox = DirectCast(sender, ToolStripComboBox)
MessageBox.Show(cmb.SelectedItem.ToString() & "が選択されました")
End Sub
End Class