Foxtable(狐表)用户栏目专家坐堂 → 读取菜单结构的错误提示


  共有4590人关注过本帖树形打印复制链接

主题:读取菜单结构的错误提示

帅哥哟,离线,有人找我吗?
hfapplehao
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:215 积分:2149 威望:0 精华:0 注册:2018/3/30 19:56:00
读取菜单结构的错误提示  发帖心情 Post By:2022/2/18 9:12:00 [显示全部帖子]

想写一段代码,用来提取菜单的结构,
比如功能区,功能组,菜单按钮,还有按钮的标题,结果系统提示错误,改了几次仍然存在,不知道问题出在哪儿了,求老师指点迷津

图片点击可在新窗口打开查看此主题相关图片如下:错误提示2.png
图片点击可在新窗口打开查看

Dim dt As DataTable = DataTables("菜单结构表")

原贴代码如下
'把功能区的名称分别列入菜单表
For Each rtb As RibbonMenu.Tab In RibbonTabs  '遍历功能区,把功能区的名字加入到节点集合中
    For Each grp As RibbonMenu.Group In rtb.Groups '遍历功能区功能组集合
        For Each itm As RibbonMenu.RibbonItem In grp.Items '遍历功能组里面的所有控件
            Dim dr As DataRow = dt.addnew() '定义新加行
            dr("类型") = "功能区"
            dr("功能区") = rtb.name
            dr("功能组") = grp.name
            dr("菜单按钮") = itm.name
            'dr("菜单标题") = itm.Text '出问题的就是这个地方,想获取菜单的标题来着
            dr("菜单类型") = itm.Gettype.name
            dr.save()
        Next
    Next
Next


 回到顶部
帅哥哟,离线,有人找我吗?
hfapplehao
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:215 积分:2149 威望:0 精华:0 注册:2018/3/30 19:56:00
  发帖心情 Post By:2022/2/18 9:54:00 [显示全部帖子]

老师,按照您说的思路改了下代码,可是还是提示同样的错误
For Each rtb As RibbonMenu.Tab In RibbonTabs  '遍历功能区,把功能区的名字加入到节点集合中
    For Each grp As RibbonMenu.Group In rtb.Groups '遍历功能区功能组集合
        For Each itm As RibbonMenu.RibbonItem In grp.Items '遍历功能组里面的所有控件
            Dim dr As DataRow = dt.addnew() '定义新加行
            dr("类型") = "功能区"
            dr("功能区") = rtb.name
            dr("功能组") = grp.name
            dr("菜单按钮") = itm.name
            dr("菜单类型") = itm.Gettype.name
            If Typeof itm Is RibbonMenu.DatePicker OrElse Typeof itm Is RibbonMenu.NumericBox OrElse  Typeof itm Is RibbonMenu.TextBox  OrElse  Typeof itm Is RibbonMenu.TimePicker  OrElse  Typeof itm Is RibbonMenu.ComboBox   OrElse  Typeof itm Is RibbonMenu.FontComboBox   OrElse  Typeof itm Is RibbonMenu.ProgressBar OrElse  Typeof itm Is RibbonMenu.TrackBar  Then
                dr("菜单标题") = itm.Label
            ElseIf Typeof itm Is RibbonMenu.Separator
                dr("菜单标题") = itm.name
            Else
                dr("菜单标题") = itm.text
            End If
            
            
            dr.save()
        Next
    Next
Next


图片点击可在新窗口打开查看此主题相关图片如下:错误提示3.png
图片点击可在新窗口打开查看


 回到顶部
帅哥哟,离线,有人找我吗?
hfapplehao
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:215 积分:2149 威望:0 精华:0 注册:2018/3/30 19:56:00
  发帖心情 Post By:2022/2/18 10:24:00 [显示全部帖子]

我挨个都查看了呀,确认label属性 和text属性都分清楚了
一共16个组件,其中有8个是label 属性,7个是text属性,还有个separator  label 和text属性都没有

图片点击可在新窗口打开查看此主题相关图片如下:错误提示4.png
图片点击可在新窗口打开查看

代码也是根据查的内容写的

可是还是提示那个错误



 回到顶部
帅哥哟,离线,有人找我吗?
hfapplehao
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:215 积分:2149 威望:0 精华:0 注册:2018/3/30 19:56:00
  发帖心情 Post By:2022/2/18 11:50:00 [显示全部帖子]

问题解决了,只能挨个设置了
测试过程中又发现几个新问题
1. FontComboBox 这个会跳出两个text属性,见附件

If  Typeof itm Is RibbonMenu.FontComboBox  Then
                Dim it2 As RibbonMenu.FontComboBox = itm
                dr("菜单标题") = it2.Text '这个地方按住精灵会出现两个text属性
end if


2.progressbar 和 trackbar 没有label 属性。但是帮助文档里提到有label 属性,是不是忘了更新了
测试截图如下

 Else If  Typeof itm Is RibbonMenu.ProgressBar  Then
                Dim it2 As RibbonMenu.ProgressBar = itm
                dr("菜单标题") = it2.Text

            Else If  Typeof itm Is RibbonMenu.TrackBar  Then
                Dim it2 As RibbonMenu.TrackBar = itm
                dr("菜单标题") = it2.Text

            end if
 另外 progressbar 和 trackbar 的Text 为啥会出错呀?
看错误提示

图片点击可在新窗口打开查看此主题相关图片如下:progressbar and trackbar.png
图片点击可在新窗口打开查看

在老师的帮助下,终于完成了这个代码
大家可以参考下
Dim dt As DataTable = DataTables("菜单结构表")

'把功能区的名称分别列入菜单表
For Each rtb As RibbonMenu.Tab In RibbonTabs  '遍历功能区,把功能区的名字加入到节点集合中
    For Each grp As RibbonMenu.Group In rtb.Groups '遍历功能区功能组集合
        For Each itm As RibbonMenu.RibbonItem In grp.Items '遍历功能组里面的所有控件
            Dim dr As DataRow = dt.addnew() '定义新加行
            dr("类型") = "功能区"
            dr("功能区") = rtb.name
            dr("功能组") = grp.name
            dr("菜单按钮") = itm.name
            dr("菜单类型") = itm.Gettype.name
            
            If Typeof itm Is RibbonMenu.DatePicker  Then
'此处以下是label 属性
                Dim it2 As RibbonMenu.DatePicker = itm
                dr("菜单标题") = it2.label
                
            Else If Typeof itm Is RibbonMenu.NumericBox Then
                Dim it2 As RibbonMenu.NumericBox = itm
                dr("菜单标题") = it2.label
                
            Else If  Typeof itm Is RibbonMenu.TextBox   Then
                Dim it2 As RibbonMenu.TextBox   = itm
                dr("菜单标题") = it2.label
            Else If  Typeof itm Is RibbonMenu.TimePicker   Then
                Dim it2 As RibbonMenu.TimePicker   = itm
                dr("菜单标题") = it2.label
            Else If Typeof itm Is RibbonMenu.ComboBox    Then
                Dim it2 As  RibbonMenu.ComboBox = itm
                dr("菜单标题") = it2.label
            Else If  Typeof itm Is RibbonMenu.FontComboBox  Then
                Dim it2 As RibbonMenu.FontComboBox = itm
                dr("菜单标题") = it2.Label
'此处一下是text
            Else If  Typeof itm Is RibbonMenu.Button  Then
                Dim it2 As RibbonMenu.Button = itm
                dr("菜单标题") = it2.text

            Else If  Typeof itm Is RibbonMenu.menuButton  Then
                Dim it2 As RibbonMenu.menuButton = itm
                dr("菜单标题") = it2.text

            Else If  Typeof itm Is RibbonMenu.splitButton  Then
                Dim it2 As RibbonMenu.splitButton = itm
                dr("菜单标题") = it2.text

            Else If  Typeof itm Is RibbonMenu.toggleButton  Then
                Dim it2 As RibbonMenu.toggleButton = itm
                dr("菜单标题") = it2.text

            Else If  Typeof itm Is RibbonMenu.label  Then
                Dim it2 As RibbonMenu.label = itm
                dr("菜单标题") = it2.text

            Else If  Typeof itm Is RibbonMenu.checkbox  Then
                Dim it2 As RibbonMenu.checkbox = itm
                dr("菜单标题") = it2.text

            Else If  Typeof itm Is RibbonMenu.separator  Then
                Dim it2 As RibbonMenu.separator = itm
                dr("菜单标题") = it2.Text

            Else If  Typeof itm Is RibbonMenu.Colorpicker  Then
                Dim it2 As RibbonMenu.Colorpicker = itm
                dr("菜单标题") = it2.text

            Else If  Typeof itm Is RibbonMenu.FontComboBox  Then
                Dim it2 As RibbonMenu.FontComboBox = itm
                dr("菜单标题") = it2.Text

            Else If  Typeof itm Is RibbonMenu.ProgressBar  Then
                Dim it2 As RibbonMenu.ProgressBar = itm
                dr("菜单标题") = it2.Text

            Else If  Typeof itm Is RibbonMenu.TrackBar  Then
                Dim it2 As RibbonMenu.TrackBar = itm
                dr("菜单标题") = it2.Text

            End If                     '
            dr.save()
        Next
    Next
Next





 回到顶部