none
關於目錄選單 (ToolStripMenuItem) 與突顯選單(ContextMenuStrip) RRS feed

  • 問題

  • 有一個特殊的需求

    想要請教各位前輩

    這個需求就是跟IE瀏覽器的[我的最愛]一樣

    在下拉[我的最愛]以後裡面的每一個(ToolStripMenuItem)

    點擊滑鼠右鍵要出現突顯式選單(ContextMenuStrip)

    可是(ToolStripMenuItem)不可以消失仍然要停在原地

    可是小弟在實做的時候

         Me.ContextMenuStrip1.Show(Control.MousePosition.X, Control.MousePosition.Y)
            Me.ToolStripMenuItem.ShowDropDown()

    發現各兩個控制項好像會有衝突

    會互相排斥一個出現了另一個就消失了

    有沒有辦法可以讓他們兩個同時存在畫面上

    2007年7月2日 上午 09:18

所有回覆

  • 把 ToolStripMenuItem 的 Owner 的 DropDown.AutoClose 設為 False, 當你點滑鼠右鍵時, Menu 就不會收回去.

    說明請參考 : http://msdn2.microsoft.com/en-us/library/system.windows.forms.toolstripdropdown.autoclose.aspx

    2007年7月3日 上午 10:48
  • 感謝前輩的建議

    這個屬性我有測試過了

    不過有點疑惑現象

    當IE瀏覽器我的最愛下拉之後

    點擊滑鼠右鍵呼叫出右鍵選單之後

    整個IE瀏覽器裡面的物件對於滑鼠的移動到物件上的效果都不見

    比如頁面上的超連結或者工具列的下拉清單

    滑鼠的移動只有對右鍵選單會產生反應

    像這樣子的效果是該怎麼做出來的..??

    2007年7月4日 上午 02:19
  • 可以這麼做, 在 ContextMenuStrip 的

    Opened event 中, 把 menu, dropdown menu, Form 上的 Panel, ...等的 Enabled = false

    Closed event 時, 再把他們的 Enabled = true
    2007年7月4日 上午 04:43
  • 如果是使用Enabled = false

    這種特性的話會造成容器內的相關事件無法作動比如CLICK事件

    右鍵選單以外的地方點擊CLICK引發事件將右鍵選單收起來

    的效果就會做不出來了

    2007年7月5日 上午 09:37
  • 剛剛試了一下, 用我的例子來說, 有個 menu1, 結構如下,

    menuitem1
        +---- subitem1
        +---- subitem2

    當在 subitem2 上點滑鼠右鍵時, 會 popup 一個 popupmenu1 出來, 這個 popupmenu1 是一個 ContextMenuStrip.

    那我的 Code 像這樣

    private void popupmenu1_Opened(object sender, EventArgs e)
    {  
        menu1.Enabled = panel1.Enabled = false;
    }

    private void popupmenu1_Closed(object sender, ToolStripDropDownClosedEventArgs e)
    {
        menu1.Enabled = panel1.Enabled = true;
        menuitem1.DropDown.Close();
    }

    private void subitem2_MouseDown(object sender, MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Right)
        {
            menuitem1.DropDown.AutoClose = false;
            popupmenu1.Show();
            menuitem1.DropDown.AutoClose = true;
        }
    }

    當你的 popupmenu1 出現後, 你在螢幕其他地方 Click, 選單還是會收起來.
    2007年7月5日 下午 05:16