在WinForm上通过标签查找控件

本文关键字:标签 查找 控件 WinForm | 更新日期: 2023-09-27 18:01:36

我有一个动态的Label, Tag创建了14个Label并添加在GroupBox中,然后,我想搜索具有Tag = "ABC"Label,我已经尝试过了:

var items = grouptodayerror.ControlCollection;
var finditem = items.Cast<Control>().FirstOrDefault(control => String.Equals(control.Tag, "ABC");

grouptodayerror是我的GroupBox,得到一个错误信息

Error   1   'ControlCollection': cannot reference a type through an expression; try 'System.Windows.Forms.Control.ControlCollection' instead

我也试过了:

Label findbox = grouptodayerror.Controls.Find("ABC", true).FirstOrDefault() as Label;
  if (findbox != null)
  findbox.Text = "CDE";

但是我在第一行得到null reference错误。

我的问题是:
  1. 如何获取ControlCollection ?
  2. 第二个代码可以找到Tag还是ControlText ?
  3. 有办法做到这一点吗?

在WinForm上通过标签查找控件

你能试试这个吗

foreach (Label lb in Controls.OfType<GroupBox>().SelectMany(groupBox => groupBox.Controls.OfType<Label>()).ToList())
        {
            if (lb.Tag.Equals("ABC"))
            {
                //Write your logic here
            }
        }