BindingSource
- это Component
, а не Control
, так что вы действительно не можете найти его в коллекции Controls
. Однако, когда вы добавляете компоненты с конструктором, он создает поле с именем components
типа IContainer
и добавляет к нему компоненты. Поле является закрытым, поэтому вы можете получить к нему доступ только из класса, в котором оно объявлено (если только вы не используете отражение).
Я думаю, что самый простой способ добиться того, чего вы хотите - это добавить GetBindingSources
метод ко всем вашим элементам управления:
public IEnumerable<BindingSource> GetBindingSources()
{
return components.Components.OfType<BindingSource>();
}
Конечно, он будет работать только для BindingSources
, созданного в конструкторе, а не для тех, которые вы создаете динамически (если вы не добавите их в контейнер)