以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  求解惑!关于菜单删除  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=53459)

--  作者:daworedy
--  发布时间:2014/7/8 14:34:00
--  求解惑!关于菜单删除

我启动了一个新的foxtable项目,然后在命令管理器中执行了这些代码

For Each rbt As RibbonMenu.Tab In RibbonTabs
    For Each rbg As RibbonMenu.Group In rbt.Groups
        rbt.Groups.Remove(rbg)
    Next
    RibbonTabs.Remove(rbt)
Next

为何菜单不能清空,反而剩下一部分呢?

请高手指点迷津。

[此贴子已经被作者于2014-7-8 14:34:56编辑过]

--  作者:有点甜
--  发布时间:2014/7/8 14:36:00
--  

For Each rbt As RibbonMenu.Tab In RibbonTabs
    rbt.Visible = False
Next


--  作者:有点甜
--  发布时间:2014/7/8 14:37:00
--  

 或者

 

RibbonTabs.Clear


--  作者:daworedy
--  发布时间:2014/7/8 14:38:00
--  
以下是引用有点甜在2014-7-8 14:37:00的发言:

 或者

 

RibbonTabs.Clear

不能都用clear清掉,有些我需要再判断的需要留下


--  作者:daworedy
--  发布时间:2014/7/8 14:38:00
--  
一楼的情况是啥原因?
--  作者:有点甜
--  发布时间:2014/7/8 14:39:00
--  
以下是引用daworedy在2014-7-8 14:38:00的发言:

不能都用clear清掉,有些我需要再判断的需要留下

 

那就用visible,不要用remove,remove不能用在循环里,如果要用,必须从后面向前面遍历

 


--  作者:有点甜
--  发布时间:2014/7/8 14:44:00
--  

 如果要删除,代码要这样。

 

For i As Integer = RibbonTabs.Count - 1 To 0 Step -1
    For j As Integer = RibbonTabs(i).Groups.Count - 1 To 0 Step -1
        RibbonTabs(i).Groups.RemoveAt(j)
    Next
    RibbonTabs.RemoveAt(i)
Next


--  作者:daworedy
--  发布时间:2014/7/8 14:47:00
--  
多谢提醒,step方法问题解决!
--  作者:lzgt
--  发布时间:2019/7/3 11:33:00
--  

我也是碰到同样的问题,测试后发现应该是删除后系统立即刷新了菜单序位(原有1234567个菜单,测试是发现只出现1357,所以只能从后向前删除,或是隐藏不改变序位。