private List<Control> _allControls = new List<Control>();

 

 

  private void InitializeControlList()
        {
            Queue<Control.ControlCollection> q = new Queue<Control.ControlCollection>();
            q.Enqueue(this.Controls);

            while (q.Count > 0)
            {
                Control.ControlCollection controls = (Control.ControlCollection)q.Dequeue();
                if (controls == null || controls.Count == 0) continue;

                foreach (Control control in controls)
                {
                    q.Enqueue(control.Controls);
                     

                     this._allControls.Add(control);
                }
            }
        }

 

       net 中很多类有时很有必要用一下

       如果是从控件找所在窗体,只要用 FindForm()