用ButtonMenuClick事件:
Private Sub Toolbar1_ButtonMenuClick(ByVal ButtonMenu As MSComctlLib.ButtonMenu)可以用
Select case buttonmenu.index
建议用(预先设置关键字)
select case buttonmenu.key
因为不同的Button下面的Buttonmenu的index可以重复,而且用Key代码更清楚通过代码调用:
Toolbar1_ButtonMenuClick toolbar1.buttons(1).buttonmenus(2)
如果通过Key则更清楚:
(假设toolbar1.buttons(1).key = "add"
 toolbar1.buttons(1).buttonmenus(2).key = "text")Toolbar1_ButtonMenuClick toolbar1.buttons("add").buttonmenus("text")

解决方案 »

  1.   

    用PopupMenu  弹出菜单就可以了 
    不过菜单坐标需要进行一下小的转换。
    你可以看看帮助,查查PopupMenu的用法。其实用法不难。
    算了,我拷贝过来了。
    用以在 MDIForm 或 Form 对象上的当前鼠标位置或指定的坐标位置显示弹出式菜单。不支持命名参数。语法object.PopupMenu menuname, flags, x, y, boldcommandPopupMenu 方法的语法包含下列部分:部分 描述
    object 可选的。一个对象表达式 ,该对象一定能在“应用于”列表中找到。 如果省略 object,则带有焦点的 Form 对象缺省为 object。
    Menuname 必需的。要显示的弹出式菜单名。指定的菜单必须含有至少一个子菜单 。
    Flags 可选的。一个数值或常数,按照下列设置中的描述,用以指定弹出式菜单的位置和行为。
    X 可选的。指定显示弹出式菜单的 x 坐标。如果该参数省略,则使用鼠标的坐标。
    Y 可选的。指定显示弹出式菜单的 y 坐标。如果该参数省略,则使用鼠标的坐标。
    boldcommand 可选的。指定弹出式菜单中的菜单控件的名字,用以显示其黑体正文标题。如果该参数省略,则弹出式菜单中没有以黑体字出现的控件。
    设置用于 flag 的设置值有:常数位置 数值 描述
    vbPopupMenuLeftAlign 0 (缺省值)。弹出式菜单的左边定位于 x。
    vbPopupMenuCenterAlign 4 弹出式菜单的于 x 居中位。
    vbPopupMenuRightAlign 8 弹出式菜单的右边定位于 x。
    常数行为 数值 描述
    vbPopupMenuLeftButton 0 (缺省值)。 仅当使用鼠标左按钮时, 弹出式菜单中的项目才响应鼠标单击。
    vbPopupMenuRightButton 2 不论使用鼠标右按钮还是左按钮, 弹出式菜单中的项目都响应鼠标单击。
    注意 flags 参数对在 Microsoft Windows Version 3.0 或更早的版本下运行的应用程序不起作用。要指定两种 flags,应使用 Or 操作符将来自各组的一个常数结合起来。说明上述常数在对象浏览器中的 Visual Basic (VB) 对象库里列出。
    可使用 ScaleMode 属性指定x和y坐标的度量单位。x 和 y 坐标定义弹出式菜单相对于指定窗体显示的位置。如果没有包括 x 
    和 y 坐标,则弹出式菜单就显示在鼠标指针当前的位置。
    在显示弹出式菜单时,调用 PopupMenu 方法后面的代码直到用户或者从菜单中选择了命令(这时,该命令的 Click 事件的代码比 PopupMenu 语句后面的代码先执行)或者取消该菜单时才能执行。此外,每次只能显示一个弹出式菜单,因此,如果已经显示了一个弹出式菜单或打开了一个下拉式菜单时,该方法的其它调用将被忽略。