|
■No63169 (たま さん) に返信
既知の問題で対応されていません。VB2010でも同じです。
回避サンプルです。この問題を回避するための処理しかしてないので
処理によりいろいろ追加が必要となると思います。
Public Class Form1
Public Sub New()
' この呼び出しはデザイナーで必要です。
InitializeComponent()
' InitializeComponent() 呼び出しの後で初期化を追加します。
Dim Menu1_1 As New CMenuItem() With {.Text = "メニュー1-1"}
Dim Menu1_2 As New CMenuItem() With {.Text = "メニュー1-2"}
Dim Menu1_3 As New CMenuItem() With {.Text = "メニュー1-3"}
M1ToolStripMenuItem.DropDownItems.Add(Menu1_1)
Menu1_1.DropDownItems.Add("メニュー1-1-1")
Menu1_1.DropDownItems.Add("メニュー1-1-2")
Menu1_1.Enabled = False
M1ToolStripMenuItem.DropDownItems.Add(Menu1_2)
Menu1_2.DropDownItems.Add("メニュー1-2-1")
Menu1_2.DropDownItems.Add("メニュー1-2-2")
Menu1_2.Enabled = True
M1ToolStripMenuItem.DropDownItems.Add(Menu1_3)
End Sub
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Dim itm = M1ToolStripMenuItem.DropDownItems(0)
itm.Enabled = Not itm.Enabled
End Sub
End Class
Public Class CMenuItem
Inherits ToolStripMenuItem
Public Sub New()
MyBase.new()
End Sub
Public Overrides Property Enabled As Boolean
Get
Return MyBase.Enabled
End Get
Set(value As Boolean)
MyBase.Enabled = value
For Each smenu In DropDownItems.OfType(Of ToolStripItem)()
smenu.Available = value
Next
End Set
End Property
Public Overrides ReadOnly Property HasDropDownItems As Boolean
Get
If Enabled Then
Return MyBase.HasDropDownItems
Else
Return DropDownItems.Count > 0
End If
End Get
End Property
End Class
|