So come trovare e raccogliere un elenco di tutti i controlli utilizzati in un Windows Form. Qualcosa di simile a questo:Trova componenti in una finestra di dialogo C# (non controlli)
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);
}
}
}
Tuttavia questa funzione non recupera i componenti non visivi sul fondo della forma come le HelpProvider, ImageList, TableAdapter, set di dati, ecc
C'è un modo per ottenere l'elenco di questi componenti pure?
Edit:
Grazie @HighCore per avermi utilizzare System.ComponentModel.Component invece in una funzione simile mi fa ottenere una lista con componenti quali l'ImageList, il provider Guida e il BindingSource. Tuttavia, mi mancano ancora da questo elenco i TableAdapters ei DataSet. Suppongo perché quelli ereditano direttamente da Object.
Per favore,. Non mi riferire ai post più vecchi che mostrano una funzione simile alla mia e che ottiene solo l'elenco dei controlli.
Modifica: Perché i voti negativi? Questa domanda non ha mai avuto risposta prima!
Non ho familiarità con WinForms, ma se quello che stai cercando sono 'Components' (cioè' System.ComponentModel.Component'), è necessario utilizzare che invece di 'Control'. E per favore cambia questo orribile codice foreach in un bellissimo '.SelectMany()' –
http://stackoverflow.com/questions/6736914/how-to-access-find-all-controls-and-all-components-into- form-in-c –
Possibile duplicato: [Come accedere a trovare tutti i controlli e tutti i componenti in forma in C#?] (http://stackoverflow.com/questions/6736914/how-to-access-find-all-controls- e-all-components-in-form-in-c) – SwDevMan81