ゲームが作れるようになるまでがんばる日記

ゲーム制作のことを中心にゲームに関することを書いています

ListBoxでの例外発生

ListBoxを使ったプログラムを書いてテストしていたところ、ListBoxの項目を選択したときに例外が発生。次のようなエラーが。
「この列挙子がバインドされている一覧は変更されています。列挙子は、一覧が変更しない場合に限り使用できます。」
たしかにListBoxに登録されたオブジェクトを列挙子を使っていたけど、特に値を変更するようなコードは書いていないはずだけど。

foreach (int item in listBox1.Items)
{
    if (listBox1.SelectedIndex >= 0)
    {
        ...
    }
}

どうやら、foreachのループ内でSelectedIndexプロパティを参照しているのが問題らしい。値を取るだけなら問題ないと思ったけど、駄目なのかな。
と、ここまで書いておいてさらに調べてみたところ、この処理をSelectedIndexChangedイベントで呼び出しているのが問題らしい。選択したという情報がループの処理中に起こってしまうのだろうが。