2017-01-13 5 views
2

私は少しのプロジェクトで作業していましたが、基本的にタブコントロール内の子を持つ親フォームです。私がタブを変更すると、そのタブの関連オプションが親メニューのストリップに追加されます。親フォームからToolStripMenuItemを削除MenuStrip

タブを変更するたびに、新しい「オプション」がメニューストリップに表示されるので、いくつかのタブの変更後に「オプション」「オプション」「オプション」「オプション」があります。メニューストリップでは、私はむしろ前のタブからオプションを削除し、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.' 

を取得していますそれが読まれている間にコレクションを変更していると思いますか?

は、私はちょうど私がいただければ幸いです欲しいものを達成すること

任意の助けを回避する方法を知りません。

私はそれについて完全に間違った方法を行っているかもしれませんが、私はとても近いと感じています!

ありがとうございました:)

答えて

0

このエラーの解釈は正しいです。あなたはその後、それらを別々のリストの項目を「削除する」を入れて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 から削除されていること。

+0

私は(以前の検索の試行から)この方法に遭遇しましたが、それを正常に動作させることはできませんでしたが、私はあなたのコードを試します。それはそれを行う正しい方法のように見えます。私は今それを試してみます。 – DIMPeteAsUsername

+0

ありがとう、パーフェクト。 – DIMPeteAsUsername

関連する問題