既然我们可以 Panel1.Controls.Add(控件);
应该可以foreach(Control c in Panel1.Controls)
{
//如何找到我添加进去的CheckBox?
}

解决方案 »

  1.   

    foreach(Control c in Panel1.Controls)
    {
       if (c is TextBox)
       {
           if(c.ClientID=="已知的ID") 
           {}  
       }
    }
      

  2.   

    这里没有已知的ID。都是系统生成的ID
      

  3.   

    你自已都知道循环了,,是集合,,就有个数属性
    Panel1.Controls.Count;foreach(Control con in Panel1.Controls)
            {
                if (con is CheckBox)
                {
                    CheckBox cb = (CheckBox)con;
                    cb.Checked = true;
                }
            }
      

  4.   

    你自己做一个class继承checkbox.
    然后通过 is class 判断!
      

  5.   

    panel.controls.add(new button());
    panel.controls.add(new panel());
    ......
      

  6.   

    你添加CheckBox的代码呢?为什么在添加时候不给CheckBox设置ID呢?
      

  7.   

    foreach(Control c in Panel1.Controls)
    {
        if (c is CheckBox) { }
    }
      

  8.   


       foreach(Control c in Panel1.Controls)
    {
         checkbox ckb= c AS CheckBox;
        if(ckb!=null)  //不等于NULL的就是···
        {
             
        }
    }
      

  9.   

    Panel1.Controls  就是个集合 
      

  10.   

        private void ClearTextBox()  
      {  
         foreach (System.Web.UI.Control control in this.Controls)  
          {  
             for (int i = 0; i < control.Controls.Count; i++)  
               {  
                  if (control.Controls[i] is System.Web.UI.WebControls.TextBox)  
                 {  
                    System.Web.UI.WebControls.TextBox tbx = (System.Web.UI.WebControls.TextBox)control.Controls[i];  
                     tbx.Text = "";  
                 }  
               }  
          }  
       }  
    这是查找TextBox。跟你要的差不多,改改就是
      

  11.   

    怎么感觉你的题目和你的问题不相符?
    是要了解控件数量,还是要找到你添加进的某个控件?数量直接用
    Panel1.Controls.count
      

  12.   

    要找里面的控件。我这个CheckBox是动态生成在模板内的
      

  13.   

    什么意思,IF里面返回一直是FALSE?是不是你的CheckBox是子控件的子控件?
      

  14.   

    用 js来判断控件集合,还可以在代码里用集合来判断foreach语句
      

  15.   

    CheckBox是动态生成的GridView里的
      

  16.   

    那就在gridview的数据绑定事件里就可以循环判断出来个数了。都是这么做的
      

  17.   

     //全选
        protected void cbxselectall_CheckedChanged(object sender, EventArgs e)
        {        for (int i = 0; i < this.GridView1.Rows.Count; i++)
            {            CheckBox cbox = (CheckBox)GridView1.Rows[i].FindControl("cbxselect");            if (cbxselectall.Checked == true)
                {                cbox.Checked = true;            }
                else
                {                cbox.Checked = false;            }        }    }
    象这样的,我都可以判断的,你改成统计checkbox的个数就行了
      

  18.   

    这个是绑定行事件里边都可以统计的
    //gridview行绑定时
        protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {        for (int i = 0; i < GridView1.Rows.Count; i++)
            {
                //首先判断是否是数据行
                if (e.Row.RowType == DataControlRowType.DataRow)
                {
                    //当鼠标停留时更改背景色
                    e.Row.Attributes.Add("onmouseover", "c=this.style.backgroundColor;this.style.backgroundColor='#00A9FF'");
                    //当鼠标移开时还原背景色
                    e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=c");            }
            }        if (e.Row.RowType == DataControlRowType.DataRow)
            {
                //判断行的类型
                if (e.Row.RowState == DataControlRowState.Normal || e.Row.RowState == DataControlRowState.Alternate)
                {
                    //对话框
                    ((LinkButton)e.Row.Cells[7].Controls[0]).Attributes.Add("onclick", "javascript:return confirm('你确认要删除:《" + e.Row.Cells[0].Text + "》 这本书吗?')");            }
            }    }
      

  19.   

    问题是这个GridView,GridView里面的CheckBox,都是动态生成的。不好操作啊
      

  20.   

    看到倒数几篇回复才找到你要问的问题……在 GridView 的RowDataBound 事件里,可以用 foreach 遍历 GridViewRow ,如果是模板列,则控件ID 是自己命名的,可以通过 FindControl(“控件ID”) 来找到相应的控件,如果不是模板列则更容易,直接 找GridView 行的某个单元格的 .Text属性。
      

  21.   

    都是系统生成的ID,ID有没有什么规律啊,如果没有规律,在一个panel里面那么多相同类型的控件,怎么找啊
      

  22.   

    给个简单的方法把Panel1.Controls当数组来操作,下标一个一个试过去
      

  23.   

    FindControl只能找到同一个NamingContainer里的子控件,要用递归查找:public static CheckBox[] FindCheckBoxes(Control container)
    {
    ArrayList list = new ArrayList();
    foreach (Control c in container.Controls)
    {
    if (c is CheckBox)
    list.Add(c);
    list.AddRange(FindCheckBoxes(c));
    }
    return (CheckBox[])list.ToArray(typeof(CheckBox));
    }