我已經通過在這裏閱讀您的優秀答案瞭解到,從foreach循環中刪除項目並不是一個好習慣,因爲它是(我引用)「關閉分支你坐在「。將foreach循環轉換爲while循環的幫助#
我的代碼當前從下拉列表中刪除文本,但實際項目仍然存在(僅顯示文本)。
換句話說,它不是刪除,而且可能不能,因爲你不能從foreach循環中刪除。
經過幾個小時的嘗試,我無法讓我的腦子裏想到這樣做。
//For each checked box, run the delete code
for (int i = 0; i < this.organizeFav.CheckedItems.Count; i++)
{
//this is the foreach loop
foreach (ToolStripItem mItem in favoritesToolStripMenuItem.DropDownItems)
{
//This rules out seperators
if (mItem is ToolStripMenuItem)
{
ToolStripMenuItem menuItem = mItem as ToolStripMenuItem;
//This matches the dropdownitems text to the CheckedItems String
if (((ToolStripMenuItem)mItem).Text.ToString() == organizeFav.CheckedItems[i].ToString())
{
//And deletes the item
menuItem.DropDownItems.Remove(mItem);
}
}
}
}
但它不是刪除,因爲它在一個foreach循環內! 我將非常感謝您的幫助,並且是真正的驚訝,如果任何人都可以解決此代碼:)
親切的問候
是的,Linq也是我的首選,但我不想嚇倒OP,它的超棒力量:) – slugster 2010-03-24 08:35:12