title: Find components on a windows form c# (not controls)
body: <p>I know how to find and collect a list of all the controls used in a Windows Form. 
  Something like this:</p>
  
  <pre><code>static public void FillControls(Control control, List&lt;Control&gt; AllControls)
  {
      String controlName = "";
      controlName = control.Name;
  
      foreach (Control c in control.Controls)
      {
          controlName = c.Name;
          if ((control.Controls.Count &gt; 0))
          {
              AllControls.Add(c);
              FillControls(c, AllControls);
          }
      }
  }
  </code></pre>
  
  <p>However this function does not retrieve the non-visual components on the bottom of the form like the HelpProvider, ImageList, TableAdapters, DataSets, etc.</p>
  
  <p>Is there a way to get the list of these components as well?</p>
  
  <p><strong>Edit:</strong></p>
  
  <p>Thanks @HighCore for pointing me to use System.ComponentModel.Component instead in a similar function does get me a list with components such the ImageList, the Help Provider and the BindingSource.
  However, I still miss from this list the TableAdapters and the DataSets. I suppose because those inherit directly from Object. </p>
  
  <p><strong>Please</strong>. Don't refer me to older posts which shows a similar function to mine and that only gets the list of the controls. </p>
  
  <p><strong>Edit:</strong> Why the negative votes? This question has never been answered before!</p>