Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当我尝试在ASP.Net中创建动态按钮时,为什么会出现NullReferenceException?_C#_Asp.net_Object_Dynamic - Fatal编程技术网

C# 当我尝试在ASP.Net中创建动态按钮时,为什么会出现NullReferenceException?

C# 当我尝试在ASP.Net中创建动态按钮时,为什么会出现NullReferenceException?,c#,asp.net,object,dynamic,C#,Asp.net,Object,Dynamic,我是ASP.Net的新手,我正在尝试编写一个网站,创建所需数量的按钮。我有一个文本框和一个按钮,我通过点击按钮从文本框中获取我想要的按钮数,这很简单。 我有我写的代码。它应该可以工作,但我在d1[k].ID存在的行中收到一个“System.NullReferenceException:对象引用未设置为对象的实例”错误。我搜索了一下这个错误,发现是因为d1[k].ID变量为null,但我不知道该怎么办。如何解决此错误 protected void Page_Load(object sender,

我是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;

        }
    }
受保护的无效页面加载(对象发送方,事件参数e)
{
}
受保护的无效按钮1\u单击(对象发送者,事件参数e)
{
int Sayi=Convert.ToInt32(TextBox1.Text);
按钮[]d1=新按钮[Sayi];
int-Sy=20;

对于(int k=1;k您正在创建按钮数组的实例,而不是按钮本身,因此它应该是:

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;
    }
int-Sayi=Convert.ToInt32(TextBox1.Text);
按钮[]d1=新按钮[Sayi];
int-Sy=20;
for(int k=0;k
d1[k]
没有
按钮
参考,您需要在设置属性之前在该索引处创建一个按钮:

d1[k] = new Button();

你在哪一行得到异常。有很多地方可能发生异常。数组被初始化以包含每个元素中的默认值,对于引用类型,默认值为null。将
d1[k]=new Button()
添加到循环的开头。并使用
for将“k”-循环计数从0到
Sayi-1
(int k=0;k@HansKestingty,我没有注意到它起了作用,谢谢。我现在没有收到任何NullReferenceException或任何错误,但我仍然没有看到创建的按钮。你知道如何创建按钮吗?@KinderGray你没有将它们添加到页面(至少在附件代码中)@Uril我添加了这个。form1.Controls.Add(d1[k]);行,现在它工作得很好。当我创建按钮时,只有textBox1会移动。谢谢大家的帮助。