【问题标题】:Initialize an array AND variable names using a for loop C#使用 for 循环 C# 初始化数组和变量名
【发布时间】:2012-11-01 23:08:41
【问题描述】:

我无法确定是否可以执行以下操作:我想使用 for 循环初始化 PictureBox 数组中的所有值。我还希望分配的值能够使用循环迭代器。例如:

        PictureBox[] picUserCards = new PictureBox[6];

        for (int i = 0; i < picUserCards.Length; i++)
        {
            // Below is similar to what I have done in VBA 
            picUserCards[i] = picCard + (i + 1);
        }

如您所见,C# 将向我抛出一个错误,指出 picCard 在此上下文中不存在。但是,在 VB/VBA 中,它会为我连接字符,给我 picUserCards[0] = picCard1。

这可能是一个非常简单的答案,我希望它还没有被回答几十次,但是我的前期搜索除了如何使用 For 循环来处理数组的索引之外没有产生任何结果。

如果重要的话,表单上已经存在 PictureBox(其中 12 个),所以我想弄清楚如何将它们与数组关联,而不是重新设计我的表单。

编辑:我想要两个数组,一个将表单上的所有 PictureBoxes 转储到一个数组中的解决方案不能解决我的特定问题。我希望能够自己确定有多少对象与给定数组关联。

【问题讨论】:

    标签: c# arrays object for-loop picturebox


    【解决方案1】:

    您可以通过字符串名称引用子控件:

    this.Controls["picCard" + 7]
    

    这仅适用于直系后代。如果您的控件是嵌套的,您将不得不使用Find,这会有点慢(对于非性能密集型应用程序应该可以忽略不计)。

    this.Controls.Find("picCard" + 7, true)
    

    【讨论】:

    • 谢谢!我会尽快尝试(我和妻子现在已经从“我编码”切换到“我们看东西”)。
    • 不幸的是,picUserCards[i] = this.Controls["picCard" + (i + 1)];给出以下错误:错误 1 ​​无法将类型 System.Windows.Forms.Control' 隐式转换为 'System.Windows.Forms.PictureBox'。存在显式转换(您是否缺少演员表?)Intellisense 向我显示 picCard1、picCard2 等,因此我认为范围不是问题(这意味着我不需要 .Find)
    • 好吧Controls 只是Control 对象的列表。 PictureBox 是控件的子类,因此如果要分配结果,则需要进行显式转换。像这样的东西:picUserCards[i] = (PictureBox)this.Controls["picCard" + (i + 1)];
    • 漂亮!这正是我所需要的,它就像一个魅力。感谢您的帮助,我是 C# 新手,有时我的想法有点超前于我的实际技能或知识。 :)
    【解决方案2】:

    我假设您正在使用具有 Controls 属性的容器:

    var picUserCards = this.Controls.OfType<PictureBox>().ToArray();
    

    【讨论】:

    • 为什么会有人反对这个?如果你能解释为什么会很好。如果假设是正确的,这将起作用,这也是我所解释的并且将作为解决方案提供。
    • 说实话我不知道,但由于您的建议,我会做一些阅读。以后有机会再次编码时,我会试试你的答案!
    • 如果我没记错的话,这段代码不会把我所有的图片框都放在同一个数组中吗?最后我想要两个数组,picUserCards 和 picHouseCards。另外,我遇​​到了一个转换错误(请参阅我在 ean5533 的回答中的评论),基本上说它不能将类型 Control 隐式转换为类型 PictureBox。
    猜你喜欢
    • 2014-05-24
    • 2012-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-02
    • 1970-01-01
    相关资源
    最近更新 更多