2013-09-05 41 views
-1

我試圖更改Label textparent FormChild form但我收到此錯誤Object reference not set to an instance of an object.哪裏出錯? 這裏是代碼我使用錯誤:試圖從Form.Controls集合中獲取控件時的對象null引用

private void btnMedicalClgList_Click(object sender, EventArgs e) 
     { 
      this.ParentForm.Controls["lblMenuItem"].Text = "Medical College List";//getting error here 
      ShowMedicalClgList medifrm = new ShowMedicalClgList(); 
      medifrm.MdiParent = this.ParentForm; 
      this.Hide(); 
      medifrm.Show();   
     } 
+2

'this.ParentForm.Controls [ 「lblMenuItem」]'可能是您的NUL l參考例外來自於。 – JeremiahDotNet

+3

@JeremiahDotNet當然,它不是來自字符串文字 – DGibbs

+2

也許'this.ParentForm'爲空或沒有控制名稱'lblMenuItem'。嘗試調試。 –

回答

1

正如我在我的評論說,你不能使用控件的名稱作爲對照收集的索引來得到它,但你可以通過控件訪問集合查找所需的控制和做任何你想做的事情,嘗試這個辦法:

Label lbl = null; 
foreach (var control in this.ParentForm.Controls) 
{ 
    if (((Control)control).Name == "lblMenuItem") 
    { 
     lbl = (Label)control; 
     break; 
    } 
} 
if (lbl != null) 
    lbl.Text = "Medical College List"; 

或者,如果你想少寫代碼:

Control[] foundControls = this.Controls.Find("lblMenuItem", true); 
if (foundControls.Any()) 
    foundControls.First().Text = "Medical College List"; 
+0

是的,這是工作正如你所說,改變'this.Controls.Find'到'this.ParentForm.Controls.Find'在你的代碼的第二部分,這兩個作品 – Durga

+0

第一個元素,你用這個'foundControls.First()。Text'爲第二個元素使用什麼? – Durga

+0

我們正在尋找一個名爲「lblMenuItem」的控件,因爲您的表單上不能有多個控件,所以您將得到一個不超過一個的控件。 – VahidNaderi

相關問題