ToolStripの作成
今回作成する画面
Public Class Form1
Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load
'メニューストリップの作成
Dim arrayアイテム = {"アイテム1", "アイテム2", "アイテム3", "アイテム4", "アイテム5"}
For i = 0 To UBound(arrayアイテム) Step 1
'子アイテムの作成
Me.ToolStripSplitButton1.DropDownItems.Add(arrayアイテム(i), Nothing, Nothing)
'名前の指定
Me.ToolStripSplitButton1.DropDownItems.Item(i).Name = "ToolStrip" & arrayアイテム(i)
'チェック可能にする
CType(Me.ToolStripSplitButton1.DropDownItems.Item(i), ToolStripMenuItem).CheckOnClick = True
Next
'ToolStripのイベントをハンドルする
AddHandler ToolStripSplitButton1.DropDownItemClicked, AddressOf MenuItem_Click
End Sub
'イベントを受け取り処理するプロシージャ
Private Sub MenuItem_Click(sender As System.Object, e As ToolStripItemClickedEventArgs)
'■■■ ここがうまく判定しない。判定が一回遅れるので逆になる(現在調査中) ■■■
'現時点でチェックが付いているか判断
Dim tsmi As ToolStripMenuItem
For Each tsmi In Me.ToolStripSplitButton1.DropDownItems
If tsmi.Checked = True Then
MsgBox(tsmi.Name & " " & tsmi.Checked)
End If
Next
'何番目がクリックされたか
MsgBox(Me.ToolStripSplitButton1.DropDownItems.IndexOf(e.ClickedItem))
End Sub
End Class
実はこれ、判定部分がまだ良くわからない。
どれをクリックしたかの判定は可能だが、クリックしたものの現状がよくわからない。