Foxtable(狐表)用户栏目专家坐堂 → 快捷菜单,类型判断的Bug


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

主题:快捷菜单,类型判断的Bug

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


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
快捷菜单,类型判断的Bug  发帖心情 Post By:2014/6/11 14:30:00 [只看该作者]

For Each itm As RibbonMenu.ContextMenu In ContextMenus
    MessageBox.Show(itm.Gettype.Name) 'ContextMenu
    For Each itm1 As Object In ContextMenus(itm.Name).Items '没有通用类型,只能用Object凑上。
        MessageBox.Show(itm1.Gettype.Name) '明明有ContextCommandMenu,却只返回了ContextCommand
        If itm1.Gettype.Name = "ContextCommandMenu" Then '这个判断,失去了意义。
            For Each itm2 As Object In ContextMenus(itm.Name)(itm1.Name).Items

                 '如果不判断,就会报错:System.MissingMemberException: Public member 'Items' on type 'ContextCommand' not found.
            Next
        End If
    Next
Next

 

这样,快捷菜单的遍历,难上加难了。


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/6/11 14:58:00 [只看该作者]

 测试了一下,没有变通的方法,应该算是bug吧。

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


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2014/6/11 15:09:00 [只看该作者]

各种构件的遍历,包括窗口、窗口控件、菜单、内部函数、设置、全局代码,

如果能直接获取就好了。


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


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2014/6/12 11:02:00 [只看该作者]

顶起来,让狐爸关注。

其他菜单都行,单单快捷菜单不能遍历,伤心啊。


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/6/12 11:52:00 [只看该作者]

以下是引用lsy在2014-6-12 11:02:00的发言:

顶起来,让狐爸关注。

其他菜单都行,单单快捷菜单不能遍历,伤心啊。

 

看了一下,你可以这样变通

 

For Each itm As RibbonMenu.ContextMenu In ContextMenus
    MessageBox.Show(itm.Gettype.Name) 'ContextMenu
    For Each itm1 As Object In ContextMenus(itm.Name).Items '没有通用类型,只能用Object凑上.
        Dim o As object = ContextMenus(itm.Name)(itm1.name)
        MessageBox.Show(o.Gettype.Name) '明明有ContextCommandMenu,却只返回了ContextCommand
    Next
Next


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


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2014/6/12 13:09:00 [只看该作者]

以下是引用有点甜在2014-6-12 11:52:00的发言:

 

看了一下,你可以这样变通

 

For Each itm As RibbonMenu.ContextMenu In ContextMenus
    MessageBox.Show(itm.Gettype.Name) 'ContextMenu
    For Each itm1 As Object In ContextMenus(itm.Name).Items '没有通用类型,只能用Object凑上.
        Dim o As object = ContextMenus(itm.Name)(itm1.name)
        MessageBox.Show(o.Gettype.Name) '明明有ContextCommandMenu,却只返回了ContextCommand
    Next
Next

不管白猫黑猫,能捉老鼠,就是好猫。

 

老鼠已经捉住了。


 回到顶部