首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何检查(c#) ControlCollection.Find()是否已返回结果

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

Stack Overflow用户
提问于 2011-04-12 19:32:15
回答 3查看 3.6K关注 0票数 2

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

我将返回的结果存储在一个Control[]数组中。如何确定Find()是否成功?

代码

代码语言:javascript
运行
复制
Control[] temp = pictureBoxCollection.Find(TagNo, true);
if(temp.Length>0)
    UpdateRes = update_status(TagNo, Status);

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

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

EN

回答 3

Stack Overflow用户

发布于 2011-04-12 19:34:28

你试过了吗?

代码语言:javascript
运行
复制
var result = controlCollection.Find(contolName,true);
if(result == null || result.Length == 0)
{
   // fail to find
}

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

代码语言:javascript
运行
复制
    public void FillControls(List<string> container,Control control)
    {
        foreach (Control child in control.Controls)
        {
            container.Add(child.Name);
            FillControls(container,child);
        }
    }

然后使用:

代码语言:javascript
运行
复制
    public Form1()
    {
        InitializeComponent();

        List<string> controls = new List<string>();
        FillControls(controls,this);
    }
票数 6
EN

Stack Overflow用户

发布于 2011-04-12 19:36:02

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

代码语言:javascript
运行
复制
Control[] children = this.Find("mypic", true);
if (children != null && children.Length > 0)
{
   //OK to proceed...
}
票数 0
EN

Stack Overflow用户

发布于 2011-04-12 19:40:59

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

代码语言:javascript
运行
复制
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
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5634470

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档