2016-12-02 21 views
0

我需要清除我的應用程序的一種形式。但有2個控件我不想清除。如何清除c#表單時發生異常?

當我點擊我的ComboBox中的另一個選項。它首先清除所有控件,然後加載新的控件。(或至少這是我想要實現的。)

此代碼循環遍歷表單中的所有控件,並檢查控件名稱是否不等於cmbTypelblType。 (因爲這樣會清除所有控件時,離開這些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