2012-10-27 53 views
2

我想清除我的Windows RT應用程序中的列表框項目。要添加的項目,我用:從列表框中刪除項目會導致災難性故障?

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

清除的項目,我使用的:如果我嘗試使用

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

listBox1.Items.Clear(); 

然而,這將引發此異常:

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

我在R處得到相同的異常emoveAt方法。

+0

很抱歉,但沒有列出''包含'Items'在所有的定義? –

回答

1

對於第二個,你真的不想要「在」

遞增如果在0刪除項目 - 1,該項目將在0成爲該項目現在。

所以

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

} 

會工作。

不確定爲什麼你會在第一個例外中得到異常 - 你是否在某處啓動了列表框?

+0

不知道爲什麼我這樣做。在InitializeComponent之後調用add和remove方法,所以我會假設它被初始化。 – msbg

+1

我修復了它,原來是因爲我使用它從listBox1.SelectionChanged。 – msbg

3

我找到了解決這個問題的辦法。我試圖從SelectionChanged事件觸發的方法中刪除項目。我把它改爲:

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

它工作正常。

0

如果您的列表使用DataBinding綁定到某些數據,那麼在後面的數據模型而不是ListItems上工作。

(如果你有正確實現INotifyPropertyChanged接口列表將得到更新)