- PR -

ToolStripMenuItem を無効にしても、子メニューが表示されてしまう

1
投稿者投稿内容
rain
ぬし
会議室デビュー日: 2006/10/19
投稿数: 549
投稿日時: 2008-10-09 11:48
ToolStripMenuItem Enabled プロパティを False にしても、その子メニューがプルダウン表示されてしまうという現象を見つけたので書いてみます。

【確認した環境】
Windows XP Professional (SP3)
Visual Studio 2005 Professional (SP1)
使用言語:VB.NET (Windowsフォーム)

【再現コード】
コード:
        Dim toolstrip As New MenuStrip()
        Me.Controls.Add(toolstrip)

        Dim parentMenu As New ToolStripMenuItem("親メニュー")
        toolstrip.Items.Add(parentMenu)

        ' 子メニュー1 は無効にしておく
        Dim menu1 As New ToolStripMenuItem("子メニュー1")
        menu1.Enabled = False
        Dim menu2 As New ToolStripMenuItem("子メニュー2")
        parentMenu.DropDownItems.Add(menu1)
        parentMenu.DropDownItems.Add(menu2)

        Dim subMenu11 As New ToolStripMenuItem("孫メニュー1-1")
        Dim subMenu12 As New ToolStripMenuItem("孫メニュー1-2")
        Dim subMenu13 As New ToolStripMenuItem("孫メニュー1-3")
        menu1.DropDownItems.Add(subMenu11)
        menu1.DropDownItems.Add(subMenu12)
        menu1.DropDownItems.Add(subMenu13)

        Dim subMenu21 As New ToolStripMenuItem("孫メニュー2-1")
        Dim subMenu22 As New ToolStripMenuItem("孫メニュー2-2")
        Dim subMenu23 As New ToolStripMenuItem("孫メニュー2-3")
        menu2.DropDownItems.Add(subMenu21)
        menu2.DropDownItems.Add(subMenu22)
        menu2.DropDownItems.Add(subMenu23)


【再現手順】

  1. 「親メニュー」をクリックして、サブメニューを開く。
  2. 「子メニュー1」にカーソルをあわせる(この時点では孫メニューは開かない)
  3. 「子メニュー2」にカーソルをあわせる(孫メニュー2-1〜2-3が開く)
  4. その状態で、「子メニュー1」にカーソルをあわせる(なぜか孫メニュー1-1〜1-3が開く)


ちなみに、使わないメニューを無効ではなく非表示にすることで回避しようとしたのですが、そのときにも別の現象(↓のリンク先参照)にはまりました。
http://dobon.net/vb/dotnet/control/tsstripvisible.html
Azulean
大ベテラン
会議室デビュー日: 2008/01/04
投稿数: 123
お住まい・勤務地: 大阪府
投稿日時: 2008-10-09 22:49
引用:

rainさんの書き込み (2008-10-09 11:48) より:
ToolStripMenuItem Enabled プロパティを False にしても、その子メニューがプルダウン表示されてしまうという現象を見つけたので書いてみます。


.NET Frameworkの不具合とされていますが、発見から依然として修正されていません。
影響が小さいので放置されているのだと思います。

http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=3277181&SiteID=7
https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=117127&wa=wsignin1.0


[ メッセージ編集済み 編集者: Azulean 編集日時 2008-10-09 22:49 ]
rain
ぬし
会議室デビュー日: 2006/10/19
投稿数: 549
投稿日時: 2008-10-10 16:24
情報ありがとうございます。

フィードバックを読んで、VS2008では修正されたのかな? と一瞬期待したのですが、
引用:

It still exists in VS 2008! I cannot believe it.


orz

とりあえず今回は非表示にすることで対応しようと思います。
メニューを動的に組み立てたりもしないし、キーボードショートカットにも対応してないし。
1

スキルアップ/キャリアアップ(JOB@IT)