У меня есть форма окна, которая содержит некоторые элементы управления и некоторые компоненты (например, DataTable, XPCollection и т. Д.).Я хотел бы найти все управляющие имена и имена компонентов, которые используются в этой форме.
Вы могли бы сделать,
List<string> ctrlNames = new List<string>(); FIndAllCtrls(ctrlNames , this.Controls); private void FIndAllCtrls(ctrlNames, ControlCollection ctrlColl) { foreach(Control ctrl in ctrlColl) { ctrlNames.Add(ctrl.Name); if(ctrl.Controls.Count > 0) FIndAllCtrls(ctrlNames, ctrl.Controls); } }
это объясняется в этом узле: Поиск компонентов в форме окна c # (не элементы управления) Похоже, что есть только способ через Отражение.
IEnumerable<Control> EnumControls(Control top) { Queue<Control> todo = new Queue<Control>(); todo.Enqueue(top); while (todo.Count > 0) { Control c = todo.Dequeue(); yield return c; foreach (Control ch in c.Controls) todo.Enqueue(ch); } }