从父窗体MenuStrip中删除ToolStripMenuItem



我一直在做一个小项目,基本上它是一个父窗体,它有一个来自的子窗体,里面有Tab控件。当我更改选项卡时,它会将该选项卡的相关选项添加到父菜单栏中。

我想做的是,不是每次更改选项卡时,菜单栏上都会出现一个新的"选项",所以在更改几次选项卡后,菜单栏上将显示"选项"、"选项"one_answers"选项"。但我宁愿从上一个选项卡中删除选项,只显示1个选项。

到目前为止,我在添加新选项之前删除选项的代码如下:

Dim ParentForm As frmNavigation = frmNavigation
Dim OptionsMenuStrip As MenuStrip = ParentForm.Controls("MenuStrip1")
Dim Items As ToolStripItemCollection = OptionsMenuStrip.Items
For Each Item As ToolStripMenuItem In Items
If Item.Name = "OptionsMenu" Then
Item.Dispose()
End If
Next

但是我得到错误

'Collection was modified; enumeration operation may not execute.'

我想,我所理解的基本上是说,在阅读时,收藏会改变它?

我只是不知道该怎么办

任何帮助我实现我想要的都将不胜感激。

我甚至可能走错了路,但我感觉很近!

谢谢:)

您对此错误的解释是正确的。您可以将"要删除"的项目放在一个单独的列表中,然后Remove它们:

Dim ParentForm As frmNavigation = frmNavigation
Dim OptionsMenuStrip As MenuStrip = ParentForm.Controls("MenuStrip1")
Dim Items As ToolStripItemCollection = OptionsMenuStrip.Items
Dim removeThese As New List(Of ToolStripMenuItem)
For Each Item As ToolStripMenuItem In Items
If Item.Name = "OptionsMenu" Then
removeThese.Add(Item)
End If
Next
For Each item In removeThese
Items.Remove(item)
item.Dispose()
Next

请注意,ToolStripMenuItem是从ToolStripItemCollection中移除的,然后被释放。

相关内容

  • 没有找到相关文章

最新更新