Привет!
У меня есть 11 панелей на каждой вкладке tabcontrol и я хочу удалить 10 панелей. поэтому я написал этот код:
var PnlsToRemove = tabControl.SelectedTab.Controls.OfType<Panel>()
.Where(p => !p.Name.StartsWith("BasePanel"));
foreach (var pnl in PnlsToRemove)
pnl.Dispose();
но после отслеживания я подумал, что порядок удаления альтернативный !!!
означает, что при выполнении кода выше только панели 0,2,4,6,8,10 будут удалены, а остальные останутся.
поэтому я должен поместить свой код в цикл, чтобы поочередно удалять панели, как это:
while (tabControl.SelectedTab.Controls.OfType<Panel>().Count() != 1)
{
var PnlsToRemove = tabControl.SelectedTab.Controls.OfType<Panel>()
.Where(p => !p.Name.StartsWith("BasePanel"));
foreach (var pnl in PnlsToRemove)
pnl.Dispose();
}
в этом случае (для 10 панелей) while () повторяется 4 раза, чтобы удалить все панели.
ВНИМАНИЕ: все мои панели существуют в «PnlsToRemove», и эта ошибка возникает при выполнении «PnlsToRemove» в foreach.
Итак, что не так с моим кодом ???
Почему foreach () прыгает со следующей панели ???
Я думаю, что все ясно!