使用Asp.net的动态文本框

使用Asp.net的动态文本框,asp.net,Asp.net,在asp.net中,文本框将对按钮1产生压力。按钮2到文本框数据内的压力,该文本框数据由label1 my yazdırıca组成。我试图这样做会产生错误 对象引用未设置为对象的实例 button1_click{ TextBox txt = new TextBox(); txt.ID = "a"; txt.EnableViewState = true; Panel1.Controls.Add(txt); } Button2_click{

在asp.net中,文本框将对按钮1产生压力。按钮2到文本框数据内的压力,该文本框数据由label1 my yazdırıca组成。我试图这样做会产生错误

对象引用未设置为对象的实例

button1_click{

 TextBox txt = new TextBox();
        txt.ID = "a";
        txt.EnableViewState = true;
        Panel1.Controls.Add(txt);

 }

Button2_click{
 TextBox deneme= Panel1.FindControl("a") as TextBox;
        Label1.Text = deneme.Text; 
}

创建控件后,在第一次单击时,该控件将显示在页面上并存在

在第二次单击页面时,不再了解该文本控件,因为您没有将该信息保存在某个位置,而且只有您知道您在过去的某个时间创建了它

因此,在这段代码中,您有:

Button2_click{  
     TextBox deneme= Panel1.FindControl("a") as TextBox;
     // here the deneme is null ! and you get the exception !
     // the deneme is not exist on the second click, not saved anywhere
     Label1.Text = deneme.Text;  
}
解决方案是保持viewstate状态,说明您创建了什么控件以及如何创建,然后在PageInit上重新创建它们。或者,你可以重新设计你的页面,并想一个不同的方法来实现这一点,例如,你可以把文本控件的页面隐藏起来,然后打开它们

   Button2_click{  
TextBox txt = (TextBox)Panel1.FindControl("a");

Label Label1 = new Label();
Label1.Text=txt.Texxt;
}