C# 错误:尝试从Form.Controls集合获取控件时,对象引用为空

C# 错误:尝试从Form.Controls集合获取控件时,对象引用为空,c#,.net,winforms,C#,.net,Winforms,我正试图从子表单更改父表单中的标签文本,但我得到的错误对象引用未设置为对象的实例。错误在哪里? 这是我正在使用的代码 private void btnMedicalClgList_Click(object sender, EventArgs e) { this.ParentForm.Controls["lblMenuItem"].Text = "Medical College List";//getting error here S

我正试图从
子表单更改
父表单中的
标签文本
,但我得到的错误
对象引用未设置为对象的实例。
错误在哪里? 这是我正在使用的代码

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();           
        }

正如我在评论中所说的,您不能使用控件的名称作为控件集合的索引器来获取它,但您可以在控件集合中进行迭代,找到所需的控件并对其执行任何操作,请尝试以下操作:

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";

this.ParentForm.Controls[“lblMenuItem”]
可能是null引用异常的来源。@JeremiahDotNet当然不是来自字符串literalThis.ParentForm
为null或没有控件名
lblMenuItem
。尝试调试。@Durga您需要逐步检查您的代码,并检查是否在
ParentForm.Controls
中找到了
lblMenuItem
是的可能重复项此操作如您所说,将
this.Controls.Find
更改为
this.ParentForm.Controls.Find
,在代码的第二部分中,对于第一个元素,两个控件都可以使用此
foundControls.first().Text
第二个元素使用什么?我们正在搜索名为“lblMenuItem”的控件。表单上不能有多个具有此名称的控件,因此,如果没有多个控件,您将得到一个。