我需要找出具有某個名稱的組件是否存在於當前窗體中。 我有字符串變量中組件的名稱,如果它不存在,我需要創建它。 我使用此代碼以當前形式存在控制?
Control c = Controls.Find(New, true)[0]; //najiti komponenty
if (c == null) {}
但它給我的錯誤,該指數數組的邊界之外。 我知道這段代碼不好,但我不知道寫的很好,谷歌不幫我。
我需要找出具有某個名稱的組件是否存在於當前窗體中。 我有字符串變量中組件的名稱,如果它不存在,我需要創建它。 我使用此代碼以當前形式存在控制?
Control c = Controls.Find(New, true)[0]; //najiti komponenty
if (c == null) {}
但它給我的錯誤,該指數數組的邊界之外。 我知道這段代碼不好,但我不知道寫的很好,谷歌不幫我。
Find
方法返回一個控件數組,即Control[]
。您試圖訪問空數組的第一個元素,從而導致IndexOutOfRangeException
你應該嘗試:
Control[] controls = Controls.Find(New, true);
if (controls.Length > 0)
{
//logic goes here
}
else
{
//no components where found
}
嘗試使用Control.ContainsKey()方法(傳遞一個字符串變量方含該控件的名稱,而不是在我的例子中引用的文字):
if (!this.Controls.ContainsKey("MyControlName"))
{
// Do Something
}
另一個不錯的選擇,+1 –
更好的選擇*。 – 2017-04-17 16:45:46
這給我這個錯誤:無法隱式轉換類型「System.Windows.Forms.Control的[]」到「System.Windows.Forms.Control的」 – Crooker
對不起,我的錯,我已經更新了答案 –
謝謝,這工作很好。 – Crooker