在vb中用label+popupmenu自做了个菜单,目的是可以将它放在窗体的任何位置。现在当在某个label单击鼠标弹出菜单后,再把鼠标移到邻近的label,本来想用label的mousemove事件弹出另外一个菜单,但此时的mousemove事件却没有激发,不知有没有解决的方法?

解决方案 »

  1.   

    用断点跟踪调试一下,看是否进入了Label的其他事件中
      

  2.   

    如果我做这个项目,我会这样:
    先在另外一个窗体里,用菜单编辑器设计好菜单,然后用将含有菜单的窗体嵌入到主窗体上的某个容器控件中(需要用setparent函数,同时要用setwindowlong去掉含有菜单的窗体的标题栏),当然,这么做有一定的风险进行模拟的话,我建议全部都模拟实现,就不要用popupmenu了
    至于你的问题,我估计是popupmenu的问题(弹出菜单要点击一下(在菜单上或空白处)才会消失,你可以先用sendkey模拟一下点击后,才弹出新的菜单)
      

  3.   

    不行。弹出菜单时父窗体处于鼠标忙状态,事件全被弹出菜单SetCapture了。
      

  4.   

    //先在另外一个窗体里,用菜单编辑器设计好菜单,然后用将含有菜单的窗体嵌入到主窗体上的某个容器控件中(需要用setparent函数,同时要用setwindowlong去掉含有菜单的窗体的标题栏),当然,这么做有一定的风险应该没有什么风险,就是这样做的:)
      

  5.   

    //容器控件是什么?请具体点picturebox or frame
      

  6.   

    我不知道怎么用setparent函数把窗体放到容器中,暴风雨能否给出具体代码?
      

  7.   

    菜单弹出后,窗体的其他控件还可以触发鼠标事件吗?
    为此
    我做了个实验,
    结果证明,菜单弹出后,连窗体上的mousemove实践都不能触发
    看来只能完全模拟出一个菜单了
      

  8.   

    //我不知道怎么用setparent函数把窗体放到容器中,暴风雨能否给出具体代码?
    留下email,给你个例子
      

  9.   

    我的email:[email protected],先谢谢了!
      

  10.   

    暴风雨:
    我把form2的border设为note后(目的是让人感觉不到form2的存在),菜单的下面出现了一条黑线,怎么去掉?
    源程序在这里:http://lazypc.com/doc/menu.rar