有这么一段代码:
HtmlTable table1=new HtmlTable();
this.Controls.Add(table1);
HtmlTableRow row1=new HtmlTableRow();
HtmlTableCell no1=new HtmlTableCell();
no1.ColSpan=1;
row1.Controls.Add(no1);
HtmlTableCell no2=new HtmlTableCell();
no2.ColSpan=1;
row1.Controls.Add(no2);
TextBox box = new TextBox();
box.Text = "0";
no1.Controls.Add(box);在程序里面怎么用Controls[]这种方法引用到box呀。

解决方案 »

  1.   

    try:HtmlTable table1=new HtmlTable();
    table1.ID="tt1";
    this.Controls.Add(table1);HtmlTable t=(HtmlTable)this.FindControl("tt1");
    if(t!=null)
    {
       Response.Write("ok");
       //这里引用table1,比如:
       t.InnerHtml=....
    }
      

  2.   

    BearRui:
    我是想用Controls[]数组的方式来引用呀
      

  3.   

    如果前面没有其他控件的话,Controls[3]
      

  4.   


    TextBox tb=(TextBox)this.FindControl("TextBox1");
      

  5.   

    可以用
    TextBox box = new TextBox();
    box.Text = "0";
    box.ID = "textBox1";
    no1.Controls.Add(box);TextBox tb = (TextBox)no1.FindControl("textBox1");
      

  6.   

    Controls[]数组只能通过index来引用,而不能通过ID或name来访问的。如果你知道你要访问的控件的index就可以直接Controls[数字]来引用了!!!
      

  7.   

    源代码是这样的,大家帮我看一下吧,我把控件编译后,不能设置text值,提示是“未将对象引用设置到对象的实例。”,谢谢大家了。using System;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;namespace DropText
    { public class  DropText : Control, INamingContainer 
    { public int Value 
    {
    get 
    {
    this.EnsureChildControls();
    return Int32.Parse(((TextBox)this.FindControl("box")).Text);
    }
    set
    {
    this.EnsureChildControls();
    ((TextBox)this.FindControl("box")).Text=value.ToString();
    }
    } protected override void CreateChildControls() 
    {            HtmlTable table1=new HtmlTable();
    table1.ID="table1";
    this.Controls.Add(table1);
    HtmlTableRow row1=new HtmlTableRow();
    row1.ID="row1";
    HtmlTableCell no1=new HtmlTableCell();
    no1.ID="no1";
    no1.ColSpan=1;
    row1.Controls.Add(no1);
                HtmlTableCell no2=new HtmlTableCell();
    no2.ID="no2";
    no2.ColSpan=1;
                row1.Controls.Add(no2);
    TextBox box = new TextBox();
    box.ID="box";
    box.Text = "0";
    no1.Controls.Add(box);
    }
    }
    }
      

  8.   

    可以用
    TextBox box = new TextBox();
    box.Text = "0";
    box.ID = "textBox1";
    no1.Controls.Add(box);TextBox tb = (TextBox)no1.FindControl("textBox1");
      

  9.   

    this.FindControl肯定是不可以的
    你的TextBox是在no1里面
    private HtmlTableCell  no1;
    CreateChildControls()里面改成HtmlTableCell no1=new HtmlTableCell();
    -->
    no1=new HtmlTableCell();
    get 
    {
    this.EnsureChildControls();
    return Int32.Parse(((TextBox)no1.FindControl("box")).Text);
    }
      

  10.   

    VB 代码:
            Dim MyRow As New HtmlTableRow
            Dim MyCell As New HtmlTableCell
            Dim Box As New TextBox
            MyCell.Controls.Add(Box)
            Box.ID = "MyText"
            MyCell.ColSpan = 1
            MyRow.Controls.Add(MyCell)
            Table1.Controls.Add(MyRow)
    方法一:
            DirectCast(Table1.Controls(0).Controls(0).FindControl("MyText"), TextBox).Text = "嘿嘿"
    方法二:
            DirectCast(Table1.Controls(0).Controls(0).Controls(0), TextBox).Text = "嘿嘿"
    加上适当的判断或错误处理。