在面板中添加新标签时出现了NullReferenceException异常

3

我在Form1组件中添加了一个面板。该面板名为panel1

当浏览通用列表时,我想动态添加标签。请看我的简单代码:

if (list.Count > 0)
{

    foreach (TLClass item in list)
    {
        Label key = new Label();
        key.Text = item.Key;
        panel1.Container.Add(key);  //here throws an exception

        Label code = new Label();
        code.Text = item.Code.ToString();
        panel1.Container.Add(code);

        Label en = new Label();
        en.Text = item.Languages["EN-EN"].ToString();
        panel1.Container.Add(en);


        Label fr = new Label();
        fr.Text = item.Languages["FR-FR"].ToString();
        panel1.Container.Add(fr);

        Label nl = new Label();
        nl.Text = item.Languages["NL-NL"].ToString();
        panel1.Container.Add(nl);

        Label ro = new Label();
        ro.Text = item.Languages["RO-RO"].ToString();
        panel1.Container.Add(ro);

        Form1.ActiveForm.Container.Add(panel1);
    }
}

panel1.Container.Add(key);这行代码后立即抛出了一个NullReferenceException异常。

为什么?我的错误在哪里?

enter image description here

问题解决:我使用了Controls而不是Container来调用。


2
你检查过panel1是否为空吗?99%的可能性是它为空,真正的问题是“为什么?” - Eric J.
@Eric:我写了panel1 = new Panel(),但是问题还是一样。 - Snake Eyes
@JohnSaunders:有例子吗?我已经用过了。 - Snake Eyes
2
它不应该只是简单地使用panel1.Controls.Add吧? - Steve
几乎所有的“NullReferenceException”异常情况都是相同的。请参考“.NET中的NullReferenceException是什么?”获取一些提示。 - John Saunders
显示剩余4条评论
1个回答

4

您需要向容器中添加控件。
通常应该将父表单作为容器,但是当您添加时,父表单没有被设置。
然而,正确的方法是将控件添加到面板的控件集合中。

panel1.Controls.Add(key);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接