3

是否有有效的方法来过滤面板的子控件的类型,例如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在语句之间使用。

4

2 回答 2

5

OfType您可以使用扩展方法过滤特定类型的所有控件:

var labelControls = panel.Controls.OfType<Label>();

然后如果你想添加额外的过滤(例如基于标签):

var filteredLabelControls = labelControls.Where(l => l.Tag == (object)1);
于 2013-06-26T10:00:36.743 回答
4

听起来你想要这样的东西:

foreach (var control in panel.Controls
                             .Cast<Control>()
                             .Where(c => object.Equals(c.Tag, 1))
{
    ...
}
于 2013-06-26T09:57:12.760 回答