2013-01-06 67 views
5

我需要找出具有某個名稱的組件是否存在於當前窗體中。 我有字符串變量中組件的名稱,如果它不存在,我需要創建它。 我使用此代碼以當前形式存在控制?

Control c = Controls.Find(New, true)[0]; //najiti komponenty 

     if (c == null) {} 

但它給我的錯誤,該指數數組的邊界之外。 我知道這段代碼不好,但我不知道寫的很好,谷歌不幫我。

回答

6

Find方法返回一個控件數組,即Control[]。您試圖訪問空數組的第一個元素,從而導致IndexOutOfRangeException 你應該嘗試:

Control[] controls = Controls.Find(New, true); 
if (controls.Length > 0) 
{ 
    //logic goes here 
} 
else 
{ 
    //no components where found 
} 
+0

這給我這個錯誤:無法隱式轉換類型「System.Windows.Forms.Control的[]」到「System.Windows.Forms.Control的」 – Crooker

+0

對不起,我的錯,我已經更新了答案 –

+0

謝謝,這工作很好。 – Crooker

3

嘗試使用Control.ContainsKey()方法(傳遞一個字符串變量方含該控件的名稱,而不是在我的例子中引用的文字):

if (!this.Controls.ContainsKey("MyControlName")) 
{ 
    // Do Something 
} 
+0

另一個不錯的選擇,+1 –

+0

更好的選擇*。 – 2017-04-17 16:45:46