Encontrar componentes em um formulário do windows c # (não controles)

Eu sei como encontrar e coletar uma lista de todos os controles usados ​​em um formulário do Windows. Algo assim:

static public void FillControls(Control control, List<Control> AllControls)
{
    String controlName = "";
    controlName = control.Name;

    foreach (Control c in control.Controls)
    {
        controlName = c.Name;
        if ((control.Controls.Count > 0))
        {
            AllControls.Add(c);
            FillControls(c, AllControls);
        }
    }
}

No entanto, essa função não recupera os componentes não visuais na parte inferior do formulário, como o HelpProvider, ImageList, TableAdapters, DataSets, etc.

Existe uma maneira de obter a lista desses componentes também?

Editar:

Obrigado @HighCore por apontar-me para usar System.ComponentModel.Component em vez disso, em uma função semelhante, obtém-me uma lista com componentes como o ImageList, o Provedor de Ajuda e o BindingSource. No entanto, ainda sinto falta desta lista os TableAdapters e os DataSets. Eu suponho porque aqueles herdam diretamente do objeto.

Por favor. Não me encaminhe para posts mais antigos que mostrem uma função semelhante à minha e que só receba a lista dos controles.

Editar: Por que os votos negativos? Esta questão nunca foi respondida antes!

questionAnswers(1)

yourAnswerToTheQuestion