簡體   English   中英

ContextMenuStrip動態分配給下拉按鈕項C#WINFORM

[英]ContextMenuStrip assign dynammically to dropdownbutton items C# WINFORM

我正在WINFORMS中構建Web瀏覽器。 我在工具欄中有一個dropdown按鈕。 dropdown項是在運行時從XML文件動態添加的。 下拉按鈕用於查看書刊。 我有一個帶有添加和刪除書簽選項的contextmenu 我沒有dropdownbutton items. contextmenuproperty dropdownbutton items. 我需要右鍵單擊下拉按鈕中的每個項目以顯示上下文菜單。 我什至找不到項目的mouseclick事件。 因此沒有e.location

//I have got these events do far (just handles the click)
    private void bookmarksDropDownButton2_DropDownItemClicked(object sender, ToolStripItemClickedEventArgs e)
            {
                tabControlBrowser.SelectedTab = tabControlBrowser.TabPages[tabControlBrowser.TabPages.Count - 1];
                getCurrentWebBrowser().Navigate(dictionary[e.ClickedItem.Text]);
                AddressComboBox1.Text = dictionary[e.ClickedItem.Text];
            }

我以這種方式將事件連接到代碼中

    foreach (ToolStripItem item in bookmarksDropDownButton2.DropDownItems)
            {
                item.MouseDown += new MouseEventHandler(item_MouseDown);
            }
    private void item_MouseDown(object sender, MouseEventArgs e)
        {
              BOOKcontextMenuStrip1.Show(e.Location);
              //this one pop's out the menu at the uppermost corner of the window.
        }

在此處輸入圖片說明

不幸的是,您不能將ContextMenuToolStrip單個項目。 您需要做的是在右鍵單擊DropDownButton時,在它的MouseDown事件(檢查哪個鼠標按鈕)上對工具欄本身設置上下文菜單。

  • 或在這種情況下:

相反,您需要為每個項目動態地為MouseDown事件添加一個處理程序,以便可以選擇(懸停)實際的項目。 右鍵單擊項目時,您將上下文菜單分配給工具條本身(您現在可以在上下文菜單的Tag屬性中存儲單擊的項目的ID)。

然后,在ContextMenu的Closed事件上,從工具欄( .ContextMenuStrip=null )中刪除菜單。

抱歉,我現在沒有C#示例。 讓我知道是否足夠清楚,在這種情況下,我將嘗試添加一個示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM