2

WindowsRTアプリでリストボックスの項目をクリアしようとしています。アイテムを追加するには、次を使用します。

List<string> list1;
...
foreach(string s in list1.Items)
{
    listBox1.Items.Add(s);
}

アイテムをクリアするために、私は使用します:

listBox1.Items.Clear();

ただし、これにより次の例外がスローされます。

Catastrophic failure (Exception from HRESULT: 0x8000FFFF (E_UNEXPECTED))

私が使おうとすると:

        int at = 0;
        while (at < listBox1.Items.Count)
        {
            listBox1.Items.RemoveAt(at);
            at += 1;
        }

RemoveAtメソッドでも同じ例外が発生します。

4

3 に答える 3

3

この問題の解決策を見つけました。SelectionChanged イベントによって起動されたメソッドからアイテムを削除しようとしていました。これを次のように変更しました。

await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, listBox1.Items.Clear);

そして、それはうまくいきます。

于 2012-10-27T19:58:26.190 に答える
1

2 つ目については、'at' をインクリメントしたくありません。

0 の項目を削除すると、1 の項目が 0 の項目になります。

それで

while (listBox1.Items.Count != 0)
{
listBox1.Items.RemoveAt(0);

}

動作します。

最初の例外でなぜ例外が発生するのかわかりません - どこかでリストボックスを開始しましたか?

于 2012-10-27T19:49:21.463 に答える
0

リストが DataBinding を使用して一部のデータにバインドされている場合は、ListItems ではなく、背後にあるデータ モデルで作業してください。

(INotifyPropertyChanged インターフェイスを適切に実装していれば、リストは更新されます)

于 2015-02-10T10:55:46.513 に答える