Wiem, jak znaleźć i zebrać listę wszystkich formantów używanych w formularzu systemu Windows. coś takiego:Znajdź komponenty na formularzu okna C# (nie dotyczy)
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);
}
}
}
Jednak ta funkcja nie pobiera składniki non-wizualne na dole formularza Podobnie jak HelpProvider, ImageList, TableAdapters, zestawów danych, itp
Czy istnieje sposób, aby otrzymać również listę tych komponentów?
Edit:
Dzięki @HighCore za naprowadzenie mnie użyć System.ComponentModel.Component zamiast w podobnej funkcji robi się mi listę z elementów takiego się Imagelist, dostawca pomocy i BindingSource. Jednak nadal tęsknię z tej listy TableAdapters i DataSet. Przypuszczam, że ponieważ dziedziczą bezpośrednio z Object.
Proszę. Nie odsyłaj mnie do starszych postów, które pokazują podobną funkcję do mojej i otrzymują tylko listę kontrolek.
Edytuj: Dlaczego negatywne głosy? Na to pytanie nigdy wcześniej nie udzielono odpowiedzi!
Nie jestem zaznajomiony z winformami, ale jeśli to, czego szukasz, to "Komponenty" (I.E 'System.ComponentModel.Component'), powinieneś użyć tego zamiast" Kontroli ". I BTW, zmień ten okropny kod foreach na piękne '.SelectMany()' –
http://stackoverflow.com/questions/6736914/how-to-access-find-all-controls-and-all-components-i-o-o- form-in-c –
Możliwy duplikat: [Jak uzyskać dostęp do wszystkich formantów i wszystkich komponentów w formularzu w języku C#?] (http://stackoverflow.com/questions/6736914/how-to-access-find-all-controls- i-all-komponenty-w-form-in-c) – SwDevMan81