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