想要的效果:
用foreach遍历文本框检查是否有为空的。
如果我有10个文本框,都为空的话,每次都是直接跳到最后一个文本框
怎么才能从第一个文本框开始往下依次判断啊?
请前辈们指点一下谢谢.
foreach (Control con in this.Controls)
            {
                TextBox tb = con as TextBox;
                if (tb != null && tb.Text.Trim() == string.Empty)
                {
                    tb.Focus();
                    break;
                }
            } 

解决方案 »

  1.   

    那是不可能的,我怀疑你说的“最后一个”是界面上感官到的最后一个,看看设计里Controls.Add的顺序以及下断点的位置
      

  2.   

    private List<TextBox> InitializeControlList(Control.ControlCollection controls)
            {
                List<TextBox> txts =new List<TextBox>();
                try
                {                Queue<Control.ControlCollection> q = new Queue<Control.ControlCollection>();
                    q.Enqueue(controls);                while (q.Count > 0)
                    {
                        Control.ControlCollection controlss = (Control.ControlCollection)q.Dequeue();
                        if (controlss == null || controlss.Count == 0) continue;                    foreach (Control control in controlss)
                        {
                            q.Enqueue(control.Controls);
                            if (control is TextBox && control.Tag != null)
                            {
                                txts.Add((TextBox)control);
                            }
                        }
                    }            }
                catch (System.Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                return txts;
            }
      

  3.   

    private void InitializeControlList(Control.ControlCollection controls)
            {
                
                try
                {                Queue<Control.ControlCollection> q = new Queue<Control.ControlCollection>();
                    q.Enqueue(controls);                while (q.Count > 0)
                    {
                        Control.ControlCollection controlss = (Control.ControlCollection)q.Dequeue();
                        if (controlss == null || controlss.Count == 0) continue;                    foreach (Control control in controlss)
                        {
                            q.Enqueue(control.Controls);
                            if (control is TextBox && control.Text.Trim().Length==0)
                            {
                                control.Focus();
                                return;
                            }
                        }
                    }            }
                catch (System.Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
               
            }上面的是原来写的代码,忘记改了
      

  4.   

    tb.Focus();
    break;⊙﹏⊙b
      

  5.   

    虽然 还是不太明白guanmingle大哥写的代码,
    但是,感谢guanmingle的帮助,谢谢