如何检查(c#) ControlCollection.Find()是否返回结果

本文关键字:Find 是否 返回 结果 ControlCollection 检查 何检查 | 更新日期: 2023-09-27 17:49:59

我正在使用c#中的ControlCollection.Find()方法来查找我的表单中存在的一些图片框。

我将返回的结果存储在Control[]数组中。如何发现find()是否成功?

代码
Control[] temp = pictureBoxCollection.Find(TagNo, true);
if(temp.Length>0)
    UpdateRes = update_status(TagNo, Status);

其中TagNo是包含控件确切名称的字符串。

是的。我使用控件的确切名称。我之前已经成功地使用了Find()方法(当控件确实存在于集合中时)。这次我遇到了一个问题,因为控件可能存在也可能不存在于集合中。

如何检查(c#) ControlCollection.Find()是否返回结果

你试过了吗?

var result = controlCollection.Find(contolName,true);
if(result == null || result.Length == 0)
{
   // fail to find
}

您可以使用此方法查看所有控件的列表

    public void FillControls(List<string> container,Control control)
    {
        foreach (Control child in control.Controls)
        {
            container.Add(child.Name);
            FillControls(container,child);
        }
    }

然后使用:

    public Form1()
    {
        InitializeComponent();
        List<string> controls = new List<string>();
        FillControls(controls,this);
    }

最安全的方法是检查返回的数组是否为null且长度大于0:

Control[] children = this.Find("mypic", true);
if (children != null && children.Length > 0)
{
   //OK to proceed...
}

Find()方法将返回一个空数组(永远不会为null),如果没有找到控件。因此,您应该简单地执行如下操作:

Control[] controls = myForm.Find("picbox", true);
if (controls.Length > 0) {
   // Do logic when picture boxes are found
} else {
   // Do logic when there are no picture boxes
}