0

我正在 WINFORMS 中构建 Web 浏览器。我dropdown在工具条中有一个按钮。的项目dropdown是在运行时从 XML 文件动态添加的。下拉按钮用于查看书签。我有一个contextmenu添加和删除书签选项。我看不到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.
        }

在此处输入图像描述

4

1 回答 1

1

不幸的是,您不能将 a 连接到 aContextMenu中的单个项目ToolStrip。您需要做的是在右键单击 DropDownButton 时将上下文菜单设置为MouseDown工具条本身的事件(检查哪个鼠标按钮)。

  • 或者在这种情况下:

相反,您需要MouseDown为每个项目动态添加事件处理程序,以便您可以选择(悬停)实际项目。当一个项目被右键单击时,您将上下文菜单分配给工具条本身(您现在可以将单击的项目的 ID 存储在上下文菜单的 Tag 属性中)。

然后,在 ContextMenuClosed事件中,您从工具条 ( .ContextMenuStrip=null) 中删除菜单。

很抱歉,我现在没有 C# 示例。让我知道它是否足够清楚,在这种情况下,我将尝试添加一个示例。

于 2012-10-11T00:07:08.043 回答