-3

重複の可能性:
WPF ListBox: アイテムの削除

ここで本当に奇妙な問題に直面しています。私がやろうとしているのは、WPF のリストボックスから項目を削除することだけなので、コードは次のとおりです。

    private void button9_Click(object sender, RoutedEventArgs e)
    {
        if (listBox7.SelectedItems.Count > 0)
        {
            foreach (string item in listBox7.SelectedItems)
            {
                listBox7.Items.Remove(item);
            }
        }
    }

そして、それはまったく機能していません。[foreachループで]常にエラーメッセージが表示されます。

Collection was modified; enumeration operation may not execute.

私はその方法を何年も使用しているので、これは本当に面倒です。ところで、私は WPF に慣れていませんが、C# には十分な経験があるので、それで問題ありません。

編集:ええと、「何年も使用しています」と入力したときに、他のことについて話していることがわかりました

とにかくここに修正があります:

        List<string> removals = new List<string>();

        foreach (string item in listBox7.SelectedItems)
        {
            removals.Add(item);
        }

        foreach (string s in removals)
        {
            listBox7.Items.Remove(s);
        }
4

1 に答える 1

4

私は何年もその方法を使用しています

でループするコレクションを決して変更できないとは思えませんforeach。コピーをループするか、 を使用しますfor

(SelectedItemsは のサブセットItemsです。変更する場合は を変更ItemsしますSelectedItems)

于 2012-06-23T16:42:05.157 に答える