繁体   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