是否有有效的方法来过滤面板的子控件的类型,例如Label
属性,例如Tag
值?
例如,我有一个 panel1:
label1.Tag=1;
label2.Tag=1;
label3.Tag=2;
label4.Tag=3;
textBox1.Tag=1;
panel1.Add(controls above);
我想获取集合中的所有标签,或者所有带有 的控件Tag=1
,或者and
在语句之间使用。
OfType
您可以使用扩展方法过滤特定类型的所有控件:
var labelControls = panel.Controls.OfType<Label>();
然后如果你想添加额外的过滤(例如基于标签):
var filteredLabelControls = labelControls.Where(l => l.Tag == (object)1);
听起来你想要这样的东西:
foreach (var control in panel.Controls
.Cast<Control>()
.Where(c => object.Equals(c.Tag, 1))
{
...
}