2016-12-02 4 views
0

Мне нужно очистить форму моего приложения. Но есть два элемента управления, которые я не хочу, чтобы они очищались.Как сделать исключение при очистке формы C#?

Когда я нажимаю на другой вариант в своем ComboBox. Сначала он стирает все элементы управления, а затем загружает новые элементы управления. (Или, по крайней мере, это то, чего я пытаюсь достичь.)

Этот код проходит через все элементы управления в форме и проверяет, не являются ли имена элементов управления не равными cmbType или lblType. (Потому что таким образом он оставит эти 2 управления нетронутые при очистке всех элементов управления.)

foreach (Control c in this.Controls) 
{ 
    if (c.Name != "cmbType" && c.Name != "lblType") 
    { 
     this.Controls.Remove(c); 
     c.Dispose(); 
    } 
} 

Но этот путь будет иногда, когда я нажимаю различные варианты в моем ComboBox не будут удалены все элементы управления полностью. Он оставит некоторые элементы управления, которые не предполагается.

+1

Вашего метод делает это не учитывает дочерние элементы управления внутри элементов управления, такие как панель или групповых коробки. – ThePerplexedOne

+1

Источник петли и петли работают в середине обратного хода. Вы вычитаете из источника, на который настроен таргетинг. –

+0

@ThePerplexedOne Мы не используем никаких панелей. Это только в форме. а не в панели. – Chamoon

ответ

0

для к списку

foreach (Control item in Controls.OfType<Control>().ToList()) 
+0

Большое спасибо! Не могли бы вы немного объяснить, где мы ошибались? – Chamoon

 Смежные вопросы

  • Нет связанных вопросов^_^