0

リストボックス内の次のリストアイテムまたは最初のリストアイテムのいずれかを選択するための次のコードがあります。

if (ListBox.SelectedIndex == lst.Count - 1)
    ListBox.SelectedIndex = 0;
else
    this.ListBox.SelectedIndex = ListBox.SelectedIndex + 1;

それは例外を投げています:

Collection was modified; enumeration operation may not execute

コレクションが変更された理由は、リストアイテムの1つのコンテンツを変更する必要があるためです。変更する必要のあるリストアイテムを見つけ、そのインデックスで削除して、同じインデックスで再度追加します。

リストボックスの内容を変更してもSelectedIndexを設定できる方法はありますか?

4

2 に答える 2

1

おそらく、実行の順序と、プロパティがいつ読み書きされるかによって異なります。

試す:

var idx = ListBox.SelectedIndex;

if (idx == lst.Count - 1)
    ListBox.SelectedIndex = 0;
else
    this.ListBox.SelectedIndex = idx + 1;
于 2013-01-11T11:23:21.567 に答える
0

以下を試してください:

var index=ListBox.SelectedIndex;
if (index == lst.Count - 1)
    ListBox.SelectedIndex = 0;
else
    this.ListBox.SelectedIndex = index + 1;
于 2013-01-11T11:24:42.310 に答える