注册 登录
编程论坛 VB.NET论坛

VB.net支持宏替换吗?

梦幻倩影 发布于 2016-09-30 10:11, 3891 次点击
支持宏替换吗?
dim mymenu as string
mymenu="RefgrgToolStripMenuItem.Enabled = False"

&mymenu出错
请问如何让变量mymenu所代表的语句执行?
9 回复
#2
梦幻倩影2016-09-30 11:20
my = "RefgrgToolStripMenuItem.Enabled = True"
        Dim sc As New Object
        sc = CreateObject("ScriptControl")
        sc.language = "VBScript"
        'sc.addcode(my)
        sc.ExecuteStatement(my)
        sc.run("Main")
对象: 'RefgrgToolStripMenuItem'明明存在的,为何提示:
缺少对象: 'RefgrgToolStripMenuItem'
#3
梦幻倩影2016-10-04 15:45
dim mymenu as string
mymenu="RefgrgToolStripMenuItem"
Me.Controls(mymenu).Enabled = False"

Me.Controls("RefgrgToolStripMenuItem").Enabled = False
均会出错,为何?
#4
不说也罢2016-10-05 08:39
以下是引用梦幻倩影在2016-10-4 15:45:45的发言:

dim mymenu as string
mymenu="RefgrgToolStripMenuItem"
Me.Controls(mymenu).Enabled = False"

Me.Controls("RefgrgToolStripMenuItem").Enabled = False
均会出错,为何?



Me.Controls集合中,你确信存在一个名称为"RefgrgToolStripMenuItem"的对象吗?
另外,my属于.net的对象,避免用作变量名哦。

还有,根据上下文,不知楼主在实现什么功能。
#5
梦幻倩影2016-10-05 09:17
RefgrgToolStripMenuItem.Enabled = False
因为这样是可以的,证明菜单的对象名称没错
#6
不说也罢2016-10-05 09:24
我想,你的这个RefgrgToolStripMenuItem对象应当不在Me.Controls的集合中,而是在Me.Controls("某个菜单名").Controls的集合中
#7
梦幻倩影2016-10-05 09:26
虽然通过遍历所有控件菜单,如果名称相同,则修改其enabled属性,可以达到我要的效果,但感觉速度会有点慢
是想简化菜单权限的控制代码

我将所有菜单的名称都被我保存在一张表中,通过权限表单设置了每个人的权限
现在想从表中取出菜单控件名称,直接根据权限值修改enabled属性

#8
不说也罢2016-10-05 10:02
MenuStrip1.Items.Find("RefgrgToolStripMenuItem", True)(0).Enabled = False  ' 这样就可以了
其中,MenuStrip1是在Form中画出的默认菜单名称。
#9
不说也罢2016-10-05 10:04
dim mymenu as string
mymenu ="RefgrgToolStripMenuItem"
MenuStrip1.Items.Find(mymenu, True)(0).Enabled = False
#10
梦幻倩影2016-10-05 10:23
菜单还有Find功能啊,这样改一下快多了
1