我如何访问一个动态创建的文本框?
问题描述:
当我动态创建gridview中的无限文本框如何访问它们? 例如:我如何访问一个动态创建的文本框?
int uste_uzaklik = 30;
int nesne = ListBox1.Items.Count;
Array.Resize(ref textboxarray, nesne * nesne);
for (int str = 0; str < nesne; str++)
{
for (int stn = 0; stn < nesne; stn++)
{
textboxarray[idm] = new TextBox();
textboxarray[idm].Font.Bold = true;
textboxarray[idm].Font.Name = "Verdana";
textboxarray[idm].ID = idm.ToString();
textboxarray[idm].ToolTip = textboxarray[idm].ID;
GridView2.Rows[str].Cells[stn + 1].Controls.Add(textboxarray[idm]);
if (str == stn) textboxarray[idm].Enabled = false;
uste_uzaklik += 30;
idm++;
}
}
我在GridView中添加texboxes,你能想象一个MATRIS ... 有没有问题...... 但是,当我访问他们像这样:
if (((TextBox)(GridView2.Rows[str].Cells[stn].FindControl(idm.ToString()))).Text != null)
{
matris[i, j] = Convert.ToInt32(GridView2.Rows[str].Cells[stn].Text);
}
发生错误
Object reference not set to an instance of an object.
我该如何解决这个问题?
答
您必须控制的引用不会停止存在,您将它们添加到另一个控件。您已经创建了一个TextBoxes数组,并且您应该使用它来访问它们,而不是试图深入挖掘GridView,在您每次更改GridView时添加它们。当然,你将从TextBoxes的一维数组转换为GridView中的二维布局,所以你必须找到一些方法来确定两者之间的索引如何匹配。或者,更简单的是,您可以将textboxarray转换为二维数组,并使其与GridView中的布局完全一致。无论哪种方式,我认为这会比在GridView中糟糕的工作少得多。
可能重复[什么是NullReferenceException,我该如何解决它?](http://*.com/questions/4660142/what-is-a-nullreferenceexception-and-how-doi-i-fix-它) – 2014-10-31 18:49:07
你为什么不使用textboxarray来访问文本框?您创建了该数组,为什么不参考它? – furkle 2014-10-31 18:51:41
什么是'idm'? “idm”的初始值和最后值是什么? – 2014-10-31 18:52:49