VB中如何动态的添加菜单项

VB中如何动态的添加菜单项,第1张

菜单项的动态装入

菜单项的动态装入是指菜单项的个数不固定. 例子就是文件菜单中最近打开的

文件的列表。在第一次打开文件之前,该列表是空的,并且不在文件菜单中出现打

开一个文件后,该列表不再是空的,并且文件菜单中出现代表被打开文件的菜单项。

具体的实现过程如下:

在文件菜单里增加一个菜单项,标题任意,并假设菜单项的Name属性是

opened_files_ list

更改菜单项opened_files_list的可见属性,使 opened_files_list.Visible=

False

更改菜单项opened_files_list的下标属性,使 opened_files_list.Index=0

在程序中控制菜单项opened_files_list的动态装入。

假设要显示打开过的第二个文件的文件名,并且该文件名存放在一个文件名数

组opened _file_name里。以下的代码就实现了这一功能:

Load opened_files_list(1)

opened_files_list(1).Caption="&2"+opened_file_name(1)

opened_files_list(1).Visible=True

需要注意的是,对于下标为0的菜单项,不能用Load方法。因为在程序执行时,该

菜单项就 已经被装入到内存里了另外,在菜单项的标题属性字符里的"&"字符具有

特殊的含义,它的作 用是在显示该属性字符串的同时,并不显示"&"本身,而紧跟"&"

的字符在显示时具有下划线, 并且该字符成为热键。

如果下标不为0的菜单项不再需要,为了减少对内存资源的占用,可以用Unload

方法把它 从内存卸出同样地,不能用Unload卸出下标为0的菜单项。

1、直接在vb的相关窗口中,选择打开标准EXE。

2、这个时候如果没问题,就继续通过鼠标右键点击菜单编辑器进行跳转。

3、下一步d出新的对话框,需要根据实际情况确定加入的子菜单。

4、这样一来会看到图示的结果,即可达到目的了。

不能把在菜单中,把分隔线命名为mcfile(0),每次都说命名有错,只有命名为mcfile,才行,但是这样命名后,点击“添加菜单项”无法达到题目给出的效果,菜单不能显示“文件1”,...

---------

菜单编辑器中输入名字中是不能带括号的

像这种名字中带括号的,表示它是一个控件数组,那么可以直接输入名字 mcfile ,索引处填写 0 即可(如图)

另外你给出的代码有点小问题, Dim mcont As Integer 放在过程中,表示这个变量是普通变量,当这次点击事件结束后不保存,这样下次再执行这个事件时又归零了,就无法达到逐步增加菜单的作用。可以把 Dim mcont As Integer 改为 Static mcont As Integer,这里的 Static 表示 mcont 是一个静态变量,作用就是再次执行的时候该变量的值保持为上次退出时的值,即:

Private Sub Command1_Click()

Static mcont As Integer

mcont = mcont + 1

mcfile(0).Visible = True

Load mcfile(mcont)

mcfile(mcont).Caption = "文件" & Str(mcont)

End Sub


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11608084.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存