2013-02-13 4 views
0

У меня есть DevExpress XtraTabControl с 3 XtraTabPages. Я пытаюсь удалить вкладку на основе условия и после удаления для последней итерации она получает ошибку.Проблема с DevExpress XtraTabControl

Мой код

foreach (DevExpress.XtraTab.XtraTabPage ptp in tabContactsDetails.TabPages) 
      { 
       if (tabContactsDetails.TabPages.Contains(ptp)) 
       { 
        if (ptp.Name == "tabPTP") 
        { 
         if (maxid == String.Empty || maxid == null || maxid == "lblHiddenDebtorID") 
         { 
          tabContactsDetails.TabPages.Remove(ptp);         
         } 
         else 
         { 

         } 
        } 
       } 
      } 

и я получаю сообщение об ошибке, как

Collection was modified; enumeration operation may not execute. 

ответ

1

Вы не можете изменить коллекцию в то время как итерация через него!

Что я делаю следующее:

List<XtraTabPage> tabPagesToBeRemoved = new List<XtraTabPage>(); 

foreach (XtraTabPage ptp in tabContactsDetails.TabPages) 
{ 
    if (shouldBeRemoved()) 
    { 
     tabPagesToBeRemoved.Add(ptp); 
    } 
} 

foreach (XtraTabPage pageToBeRemoved in tabPagesToBeRemoved) 
{ 
    tabContactsDetails.TabPages.Remove(pageToBeRemoved); 
} 
Смежные вопросы