C# 使用C按类型和属性值筛选控件#
是否有有效的方法按面板的子控件的类型(例如C# 使用C按类型和属性值筛选控件#,c#,winforms,C#,Winforms,是否有有效的方法按面板的子控件的类型(例如标签属性,例如标签值)过滤面板的子控件 例如,我有一个面板1: label1.Tag=1; label2.Tag=1; label3.Tag=2; label4.Tag=3; textBox1.Tag=1; panel1.Add(controls above); 我想获取集合中的所有标签,或者所有带有Tag=1的控件,或者在语句之间使用和。听起来您想要的是: foreach (var control in panel.Controls
标签
属性,例如标签
值)过滤面板的子控件
例如,我有一个面板1:
label1.Tag=1;
label2.Tag=1;
label3.Tag=2;
label4.Tag=3;
textBox1.Tag=1;
panel1.Add(controls above);
我想获取集合中的所有标签,或者所有带有
Tag=1
的控件,或者在语句之间使用和。听起来您想要的是:
foreach (var control in panel.Controls
.Cast<Control>()
.Where(c => object.Equals(c.Tag, 1))
{
...
}
foreach(面板控件中的var控件
.Cast()
其中(c=>object.Equals(c.Tag,1))
{
...
}
您可以使用类型的扩展方法过滤特定类型的所有控件:
var labelControls = panel.Controls.OfType<Label>();
最自然的方法是遍历面板的控件并执行一些if语句……您尝试过什么吗?在我看来,类似于panel1.Controls.Where(c=>c.Tag==1)的东西
应该很简单。我有一个foreach
循环,里面有几个if
语句。我只是在寻找最有效的方法。看起来,我在寻找这样的东西!有趣的解决方案!
var filteredLabelControls = labelControls.Where(l => l.Tag == (object)1);