这种现象是VB内定的规则,MSDN这样说:通过给 MDI 窗体和子窗体添加菜单控件,可以为 Visual Basic 应用程序创建菜单。管理 MDI 应用程序中菜单的一个方法是把希望在任何时候都显示的菜单控件放在 MDI 窗体上(即使没有子窗体可见时)。当运行该应用程序时,如果没有可见的子窗体,会自动显示 MDI 窗体菜单。把应用于子窗体的菜单控件放置到子窗体中。在运行时,只要有一个子窗体可见,这些菜单标题就会显示在 MDI 窗体的菜单栏中。我的解决方法是,在你的主窗体上放置弹出菜单,而子窗体上什么也不放,在调用时候,直接引用弹出菜单的所在窗体,在主窗体的弹出菜单中,直接调用需要用到该菜单的窗体的方法。这样做主要就是有点麻烦,你得在设计时候不停的在两个窗体间切换,以确定需要写下什么代码。不过效果很好。