Если у вас есть только один тип, который вы хотите искать, вы можете использовать метод OfType<>()
LINQ:
foreach(var control in flowLayoutPanel1.Controls.OfType<MyUserControl>())
{
control.mySpecialProperty = Guid.NewGuid();
}
Если у вас есть несколько типов элементов управления, то вам нужен какой-то диспетчер.Самым простым будет какой-то Dictionary<Type, Action<Control>>
.
private static readonly Dictionary<Type, Action<Control>> _Dispatcher = new Dictionary<Type, Action<Control>>
{
{ typeof(MyControl), HandleMyFirstControl },
{ typeof(AnotherControl), HandleMySecondControl },
};
private static void HandleMyFirstControl(Control control)
{
var myControl = (MyControl)control;
myControl.MySpecialValue = 73;
}
private static void HandleMySecondControl(Control control)
{
var anotherControl = (AnotherControl)control;
anotherControl.Foo = Guid.NewGuid();
}
private void HandleControls()
{
foreach(var control in flowLayoutPanel.Controls)
{
if(_Dispatcher.TryGetValue(control.GetType(), out Action<Control> handler)
{
handler(control);
}
}
}