为什么当我尝试在 ASP.Net 中创建动态按钮时,我会收到 NullReferenceException

本文关键字:按钮 NullReferenceException 动态 ASP 为什么 Net 创建 | 更新日期: 2023-09-27 18:36:09

我对 ASP.Net 很陌生,我正在尝试编写一个创建所需按钮数量的网站。我有一个文本框和一个按钮,我通过单击按钮从文本框中获取我想要的按钮数量,这很简单。我有我写的这段代码。它应该可以工作,但我在 d1[k].ID 存在的行出现"System.NullReferenceException:对象引用未设置为对象的实例"错误。我搜索了一下这个错误,发现这是因为 d1[k].ID 变量为 null,但我不知道该怎么办。如何解决此错误?

protected void Page_Load(object sender, EventArgs e)
    {
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        int Sayi = Convert.ToInt32(TextBox1.Text);
        Button[] d1=new Button[Sayi];
        int Sy = 20;
        for (int k = 1; k <= Sayi; k++) {
            d1[k].ID = "Btn" + k.ToString();
            d1[k].Width = 100;
            d1[k].Height = 25;
            d1[k].Text = k.ToString();
            d1[k].Attributes.Add("style", "top:"+Sy+"; left:10 ;position:absolute");
            Sy += 20;
        }
    }

为什么当我尝试在 ASP.Net 中创建动态按钮时,我会收到 NullReferenceException

您创建按钮数组的实例,而不是按钮本身,因此它应该是:

int Sayi = Convert.ToInt32(TextBox1.Text);
    Button[] d1=new Button[Sayi];
    int Sy = 20;
    for (int k = 0; k < Sayi; k++) {
        var b = new Button()
        b.ID = "Btn" + k.ToString();
        b.Width = 100;
        b.Height = 25;
        b.Text = k.ToString();
        b.Attributes.Add("style", "top:"+Sy+"; left:10 ;position:absolute");
        Sy += 20;
        d1[k] = b;
    }
d1[k]没有

Button引用,您需要在该索引处创建一个,然后再设置属性:

d1[k] = new Button();