以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  请教:如何遍历菜单得到狐表所有菜单项目的名称?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=139803)

--  作者:y2287958
--  发布时间:2019/8/22 7:53:00
--  请教:如何遍历菜单得到狐表所有菜单项目的名称?
如题。
以下代码可以得到第一级项目的名称,如何获得全部菜单项目的名称?
For Each rb As RibbonMenu.Tab In RibbonTabs
    For Each gp As RibbonMenu.Group In RibbonTabs(rb.name).Groups
        For Each itm As RibbonMenu.RibbonItem In RibbonTabs(rb.name).Groups(gp.Name).Items
            Output.Show(rb.name & "-" & gp.Name & "-" & itm.Name)
        Next
    Next
Next

--  作者:有点蓝
--  发布时间:2019/8/22 9:31:00
--  
需要使用递归

For Each rb As RibbonMenu.Tab In RibbonTabs
Output.Show(rb.name)
    For Each gp As RibbonMenu.Group In rb.Groups
Output.Show(gp .name)
        For Each itm As RibbonMenu.RibbonItem In gp.Items
Output.Show(itm .name)
--------在递归中实现
        For Each itm2 As RibbonMenu.RibbonItem In itm.Items
            Output.Show(itm2.Name)
        Next
---------
        Next
    Next
Next


--  作者:y2287958
--  发布时间:2019/8/22 10:00:00
--  
折腾了很久,未搞定。
定义了一个“全部菜单项目”的函数,代码如下。
Dim rb As RibbonMenu.Tab = args(0)
Dim gp As RibbonMenu.Group = args(1)
Dim itm As RibbonMenu.RibbonItem = args(2)
For Each rb In RibbonTabs
    \'Output.Show(rb.name)
    For Each gp In rb.Groups
        \'Output.Show(gp .name)
        For Each itm In gp.Items
            \'Output.Show(itm .name)
            \'Output.Show(rb.name & "-" & gp.Name & "-" & itm.Name)
            \'--------在递归中实现
            Functions.Execute("全部菜单项目",rb,gp,itm)
            \'For Each itm2 As RibbonMenu.RibbonItem In itm.Items
            \'Output.Show(itm2.Name)
            \'Next
            \'\'---------
        Next
    Next
Next

调用时出现了死循环项目闪退,没折了,请蓝帮忙。

--  作者:有点蓝
--  发布时间:2019/8/22 10:13:00
--  
--------只有这段代码需要放到函数中
        For Each itm2 As RibbonMenu.RibbonItem In itm.Items
            Output.Show(itm2.Name)
        Next
---------

--  作者:y2287958
--  发布时间:2019/8/22 10:21:00
--  
提示:
---------------------------
错误
---------------------------
编译错误:\'Items\' is not a member of \'RibbonMenu.RibbonItem\'.


错误代码:For Each itm2 As RibbonMenu.RibbonItem In itm.Items
---------------------------
确定   
---------------------------


--  作者:有点蓝
--  发布时间:2019/8/22 10:32:00
--  
判断一下菜单类型,可以有下级菜单的,才进入递归
--  作者:y2287958
--  发布时间:2019/8/22 10:50:00
--  
问题是:这个函数的代码都过不去
--  作者:有点蓝
--  发布时间:2019/8/22 10:56:00
--  
都说了先判断,再进入函数呀
--  作者:y2287958
--  发布时间:2019/8/22 11:16:00
--  


图片点击可在新窗口打开查看此主题相关图片如下:1566443644(1).png
图片点击可在新窗口打开查看
这是我定义函数的代码,这个代码就不能成功创建函数,也就无法到后面的进入函数了。

实在是搞不定,啰嗦了。


--  作者:有点蓝
--  发布时间:2019/8/22 11:38:00
--  
先转换为对应的类型再用呀,类似这种

For Each c As WinForm.Control In e.Form.Controls
    If
 Typeof c Is WinForm.TextBox Then \'判断控件是否是文本框
        
Dim t As WinForm.TextBox = c \'使用特定类型的变量引用控件
        t.Value = 
Nothing
    End
 If
Next