如何卸载或关闭弹出式菜单

ccbbcc 2018-10-31 02:55:26
我程序里用到弹出式菜单,菜单里动态生成许多菜单项。
用过之后,我想卸载或者关闭弹出式菜单。
下次在打开弹出式菜单,重新动态生成菜单项。
我用Unload MenuSub
提示错误。
我该怎么办?谢谢!
...全文
77 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
舉杯邀明月 2018-10-31
  • 打赏
  • 举报
回复
这种情况下,“索引”那儿,就不要填内容,应该是“空白”的。
舉杯邀明月 2018-10-31
  • 打赏
  • 举报
回复
“文件”主菜单下的菜单项,一般是固定的吧。
并且,跟“新建”同级的菜单项,是可以用不同的“名称”的。
比如“新建”是menuNew ,“打开”是menuOpen 等等……

ccbbcc 2018-10-31
  • 打赏
  • 举报
回复


这是我又写了个测试程序的菜单编辑器设置。
你看看对不对?谢谢!
舉杯邀明月 2018-10-31
  • 打赏
  • 举报
回复
知道原因了。
如果你要“全部卸载”时,先把 menuSub(0).Visible = True

有“子菜单”时,至少要有一个菜单项是可见的。

要不然,你在“设计菜单”时,把0号菜单的标题设置为 - (1个英文减号),
 这样就可以不必去管 0号菜单项的Visible属性了,并且“外观”上也没什么影响。
ccbbcc 2018-10-31
  • 打赏
  • 举报
回复
试验机是一个Form的名称
舉杯邀明月 2018-10-31
  • 打赏
  • 举报
回复
引用 9 楼 chenbingjy 的回复:
谢谢!你能把工程发给我吗?用这个还是不能删除最后一项。

不能删除最后一项?
等我测试一下……

ccbbcc 2018-10-31
  • 打赏
  • 举报
回复
谢谢!你能把工程发给我吗?用这个还是不能删除最后一项。
舉杯邀明月 2018-10-31
  • 打赏
  • 举报
回复
你的“试验机”, 是一个Form的名称吧?
舉杯邀明月 2018-10-31
  • 打赏
  • 举报
回复
引用 4 楼 chenbingjy 的回复:
改成For j = 1 To UBound(试验机.MenuSub)

Unload 试验机.MenuSub(j)

Next j
提示缺少数组


For j = 1 To 试验机.MenuSub.UBound
舉杯邀明月 2018-10-31
  • 打赏
  • 举报
回复
刚才创建工程看了一下,
我们需要操作的是从“元素号1”到“元素上界”的菜单项。

因此应该用 1 To menuSub.UBound

最大的“下标”是 (menuSub.Count -1)
ccbbcc 2018-10-31
  • 打赏
  • 举报
回复

改成这样,无法删除最后一个。
ccbbcc 2018-10-31
  • 打赏
  • 举报
回复
改成For j = 1 To UBound(试验机.MenuSub)

Unload 试验机.MenuSub(j)

Next j
提示缺少数组
舉杯邀明月 2018-10-31
  • 打赏
  • 举报
回复
那就把ubound(menusub) 改成 menusub.count


ccbbcc 2018-10-31
  • 打赏
  • 举报
回复
谢谢!我就是用你的方案。
我按照你的方法卸载菜单项,可是出错:

舉杯邀明月 2018-10-31
  • 打赏
  • 举报
回复
你是用前一个帖子中,我给你的那个“方案”吧?

要卸载的话,执行这样一段代码就行了:

dim i as long
for i=1 to ubound(menusub)
unload menusub(i)
next
以上是把动态加载的菜单项全部卸载掉。
menuSub(0)这个元素不是动态加载的对象,就不能卸载。

上次我也给你说过要“管理”当前已经加载了多少项……
也就是说,你要“变更”菜单项的话,看“当前项数”与需要的项数:
如果当前项数不够,就从“已有项数+1”开始继续增加;
比“需要的项数”多,则把多余的卸载掉。
然后,从1到“需要的数”更新为相应的菜单标题。

1,453

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧