2013-01-16 47 views
3

我有一個列表框,數據綁定到對象列表<>對象。在ListBox_SelectionChanged事件上,我正在檢查所選索引是否是列表<>中的最後一項。如果selectedIndex是最後一個項目,那麼我想刪除該項目並調用我的Web服務以將更多項目添加到列表中。但是,如果selectedIndex不是最後一項,我想導航到一個頁面。我的問題是,如果selectedTndex是最後一個項目,它會去掉最後一個項目,但是它會再次回到相同的「if」條件,我會檢查selectedIndex是否是最後一個項目。所以,而不是打電話給我的服務,它導航到下一頁。有人可以告訴我爲什麼它再次調用if()條件以及如何處理它?根據C#中的條件刪除包含對象列表<>的列表框的最後一項。

+1

請發佈你想要做的一些代碼。 – Anchit

+1

我覺得當你刪除你的項目ListBox控件時會自動集中前一個項目,並且它會觸發SelectionChanged事件。所以你可以退訂這個活動,當你需要它(當你刪除物品),然後再次訂閱 – acrilige

回答

1

我認爲,當你從列表框中刪除你的項目時,他(ListBox控件)會自動選擇上一個項目,並且會觸發SelectionChanged事件。所以你可以從這個事件(在僞代碼)之前剛剛退訂:

bool isLast = ... ; 
if (isLast) 
{ 
    listBox.SelectionChanged -= OnSelectionChanged; 
    Remove(item); 
    listBox.SelectionChanged += OnSelectionChanged; 
} 

所以,當您將刪除您的項目這一事件不會再次觸發。另外,也許你會想清除選擇:

listBox.SelectedIndex = -1; 
+0

它的工作。 ...非常感謝。 – Shan

0

也許如果你清除列表框並重新加載它會有所幫助。

+1

和影響性能...不是一個好主意,他需要做的是向我們展示他使用的代碼 – TimothyP

相關問題