Dim i As Integer = ComboBox1.Items.Count - 1 Dim j As Integer 'ComboBox1のItemの数だけMenuItemをつくる Dim mymenu(i) As System.Windows.Forms.MenuItem
MenuItem1.MenuItems.Clear 'いったんすべて削除
For j = 0 To i mymenu(j) = New System.Windows.Forms.MenuItem() mymenu(j).Text = ComboBox1.Items(j) AddHandler mymenu(j).Click, AddressOf Me.mymenu_Click Next
Me.MenuItem1.MenuItems.AddRange(mymenu)
End Sub
Private Sub mymenu_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) MsgBox(sender.text) End Sub
Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Randomize() ComboBox1.Items.Add(Int(Rnd() * 10)) Call CreateMenu() End Sub
分類:[.NET]
いつもお世話になっております。
早速ですがご教授をお願いしたいことがあります。
Form1にComboBox1とButton1とContextMenu1とNotifyIcon1を配置します。
ContextMenu1にはMenuItem1があります。(Text="Menu1")
これで、Button1を押す度にComboBox1に乱数を追加し、NotifyIcon1の
MenuItem1.MenuItemsにComboBox1のItemを表示させたいのです。
そこで以下のように書いてみました。
Private Sub CreateMenu()
Dim i As Integer = ComboBox1.Items.Count - 1
Dim j As Integer
'ComboBox1のItemの数だけMenuItemをつくる
Dim mymenu(i) As System.Windows.Forms.MenuItem
MenuItem1.MenuItems.Clear 'いったんすべて削除
For j = 0 To i
mymenu(j) = New System.Windows.Forms.MenuItem()
mymenu(j).Text = ComboBox1.Items(j)
AddHandler mymenu(j).Click, AddressOf Me.mymenu_Click
Next
Me.MenuItem1.MenuItems.AddRange(mymenu)
End Sub
Private Sub mymenu_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs)
MsgBox(sender.text)
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
Randomize()
ComboBox1.Items.Add(Int(Rnd() * 10))
Call CreateMenu()
End Sub
すると、一回目のButton1_ClickではちゃんとMenuItem1.MenuItemsに項目が
追加されますが、二回目以降は追加されているかもしれませんが表示されません。
なぜだかまったく検討がつきませんが、よろしければどこがいけないのか
ご教授お願いいたします。