DOBON.NET DOBON.NETプログラミング掲示板過去ログ

すべての階層のメニュアイテムの取得方法

環境/言語:[VB2008]
分類:[.NET]

フォーム上のメニューすべてのEnabledプロパティを変更しようと下記の用に
プログラムしたところ、メニューストリップの1階層下のメニューアイテム
は設定できたのですが、2階層以下のメニューアイテムは取得できませんで
した。
例)メニュー「File」-「Export」-「Excel」という階層のメニューがあった
場合、「File」メニューはプロパティが設定されますが、その下のメニューは
設定されない。

For Each mn As System.Windows.Forms.ToolStripMenuItem In MenuStrip.Items
If mn.GetType Is GetType(ToolStripMenuItem) Then mn.Enabled = False
Next
すべての階層のメニューアイテムに対して設定を行うには各メニューのプロ
パティ個別に設定を行うしかないのでしょうか?
値をせ
再帰していいなら、下記のように出来ますが……
これに上位のメニューアイテムを渡してあげたら下位のメニューのEnableも切れる(はず)

Private Sub enableMenu(ByVal tgt As ToolStripMenuItem)

For Each mn As System.Windows.Forms.ToolStripMenuItem In tgt.DropDownItems
If mn.GetType Is GetType(ToolStripMenuItem) Then mn.Enabled = False
If mn.HasDropDownItems Then
enableMenu(mn)
End If
Next

End Sub

DOBON.NET | プログラミング道 | プログラミング掲示板