2

我正在尝试清除我的 Windows RT 应用程序中的列表框项目。要添加项目,我使用:

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

对于第二个,你真的不想增加'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 回答