Изучив ваши замечательные ответы, я узнал, что удаление элементов из цикла foreach не является хорошей практикой, так как это (и я цитирую) "Обрезка ветви, на которой вы сидите".
Мой код в настоящее время удаляет текст из выпадающего списка, но фактический элемент остается (только текст не отображается).
Другими словами, он не удаляется, и, вероятно, не может, потому что вы не можете удалить из цикла 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!
Я был бы очень признателен за вашу помощь и был бы по-настоящему удивлен, если бы кто-нибудь смог разобраться с этим кодом:)
С уважением