如何遍历指定数字的TextBox.例如TextBox的name都是规则的.TextBox19  --- TextBox45
如何遍历19到45之间所有TextBox的内容?

解决方案 »

  1.   

    for(int i=19;i<=45;i++)
     ((TextBox)this.Controls.Find(("textBox" + i.ToString()), true)[0]).Text
      

  2.   


                            foreach (Control c in this.Controls)
                            {
                                if (c.GetType().Name.Equals("TextBox"))
                                {
                                    c.Text = "";
                                }
                            }  
    //容器中的情况 
                            foreach (Control c in this.Controls)
                            {
                                if (c is GroupBox)
                                {
                                    foreach (Control ct in c.Controls)  
                                    {
                                    //........
                                    }
                                }
                            } 
    搞定了  留下解决方法.顺便问问.为什么foreach (Control ct in groupBox1.Controls)  
    在FORM中不行?到白天结贴.讨论挂边给分.
      

  3.   

        //我在页面添加了30个textbox,先赋值为aaaaa,然后拖个按钮,调用这个方法GetTextBox(this.Page.Controls);,textbox20-25的值都为1616161
        public void GetTextBox(System.Web.UI.ControlCollection controls)//
        {
            System.Collections.Generic.List<string> _S = new System.Collections.Generic.List<string>();
            for (int i = 20; i <= 25; i++)  //textbox的范围
            {
                _S.Add("TextBox" + i.ToString());
            }        foreach (System.Web.UI.Control control in controls)
            {
                if (control.GetType().ToString() == "System.Web.UI.WebControls.TextBox" && _S.Contains(control.ID.ToString()))
                {
                    ((TextBox)control).Text = "1616161";   //进行你要的操作
                }
                GetTextBox(control.Controls);
            }
        }
      

  4.   

    顺便问问.为什么foreach (Control ct in groupBox1.Controls) 
    在FORM中不行? ——————————————
    获取到groupBox1控件了吗?
    貌似还要嵌套循环,先获取form.Controls容器中的groupBox1然后在循环groupBox1.Controls
      

  5.   

    哦   是我自己粗心了.
    foreach (Control ct in groupBox1.Controls)  是可以的.结贴了,感谢热心回复的.
      

  6.   

    var b = this.Controls.OfType<TextBox>().Select(p => p.Text);一句话就搞定非要那么复杂干吗?
    不过这个方法有个缺点只能遍历1层,如果form上包含panel,panel再包含TextBox的话就不行了,你还要对Panel的Controls执行这个方法,。这个方法返回一个List<string>
      

  7.   

    sorry没仔细看你的帖子不过也应该有单独实现的方法,我再找找
      

  8.   

    终于弄完了:/// <summary>
            /// 得到当前窗体里所有TextBox的text
            /// </summary>
            /// <returns>List<string></returns>
            private List<string> GetListTextContent()
            {
                int b = 0;
                int iStart, iEnd;
                iStart = 5;
                iEnd = 10;
                var lstTextContent = from p in this.Controls.OfType<TextBox>()
                                     where p.Name.Substring(0, 7) == "textBox" && int.TryParse(p.Name.Substring(7, p.Name.Length - 7), out b) && b > iStart && b < iEnd
                                     select p.Text;
            }        /// <summary>
            /// 得到指定窗体里所有TextBox的text
            /// </summary>
            /// <param name="frm">Form</param>
            /// <param name="flagString">标准字符串,每个Name中都出现的字符</param>
            /// <param name="iStart">规律字符开始值</param>
            /// <param name="iEnd">规律字符结束值</param>
            /// <returns>List<string></returns>
            private List<string> GetListTextContent(Form frm,string flagString,int iStart,int iEnd)
            {
                int b = 0;
                int iFlag = flagString.Length;
                var lstTextContent = from p in frm.Controls.OfType<TextBox>()
                                     where p.Name.Substring(0, iFlag) == flagString && int.TryParse(p.Name.Substring(iFlag, p.Name.Length - iFlag), out b) && b > iStart && b < iEnd
                                     select p.Text;
            }        /// <summary>
            /// 得到一个容器控件里所有TextBox的text
            /// </summary>
            /// <param name="obj">容器控件</param>
            /// <returns>List<string></returns>
            private List<string> GetListTextContent(Control obj)
            {
                int b = 0;
                int iStart, iEnd;
                iStart = 5;
                iEnd = 10;
                var lstTextContent = from p in obj.Controls.OfType<TextBox>()
                                     where p.Name.Substring(0, 7) == "textBox" && int.TryParse(p.Name.Substring(7, p.Name.Length - 7), out b) && b > iStart && b < iEnd
                                     select p.Text;
            }
            /// <summary>
            /// 得到一个容器控件里所有TextBox的text
            /// </summary>
            /// <param name="obj">容器控件</param>
            /// <param name="flagString">标准字符串,每个Name中都出现的字符</param>
            /// <param name="iStart">规律字符开始值</param>
            /// <param name="iEnd">规律字符结束值</param>
            /// <returns>List<string></returns>
            private List<string> GetListTextContent(Control obj,string flagString,int iStart,int iEnd)
            {
                int b = 0;
                int iFlag = flagString.Length;
                var lstTextContent = from p in obj.Controls.OfType<TextBox>()
                                     where p.Name.Substring(0, iFlag) == flagString && int.TryParse(p.Name.Substring(iFlag, p.Name.Length - iFlag), out b) && b > iStart && b < iEnd
                                     select p.Text;
            }