|
分類:[.NET 全般]
VB.NETを使っています。
Chart上で右クリックすると、コンテキストメニューが表示され、
それをクリックすることでチェックボックスがオンオフされるプログラムを作りたいと考えています。
右クリックでコンテキストメニューを表示するには
Private Sub Chart1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Chart1.MouseDown
If e.Button = MouseButtons.Right Then
Dim cms As New ContextMenuStrip
Dim item1 As ToolStripItem = cms.Items.Add("AAA")
item1.Tag = 1
AddHandler item1.Click, AddressOf menuChoice
Dim item2 As ToolStripItem = cms.Items.Add("BBB")
item2.Tag = 2
AddHandler item2.Click, AddressOf menuChoice
cms.Show(Chart1, e.Location)
' CType(cms.Items(1), ToolStripMenuItem).Checked = True
End If
End Sub
のようにして実現することができました。
チェックボックスの表示・非表示は
CType(cms.Items(1), ToolStripMenuItem).Checked = True
で切り替えることができます。
後は、クリックした項目のチェックボックスだけが表示・非表示されるようにしたいのですが、
Private Sub menuChoice(ByVal sender As Object, ByVal e As EventArgs)
Dim item As ToolStripMenuItem = DirectCast(sender, ToolStripMenuItem)
For Each s As ToolStripMenuItem In CType(sender, ToolStripItem).Owner.Items
If s IsNot Nothing Then
If s Is item Then
s.Checked = True 'Not s.Checked
s.CheckState = CheckState.Checked
End If
End If
Next s
End Sub
のようにしても、チェックボックスが表示されません。
どのようにすれば、選択した項目のチェックボックスを有効化することができますか?
|