2

我无法确定是否可以执行以下操作:我想使用 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 循环来处理数组的索引之外没有产生任何结果。

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

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

4

2 回答 2

2

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

var picUserCards = this.Controls.OfType<PictureBox>().ToArray();
于 2012-11-01T23:10:22.200 回答
2

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

this.Controls["picCard" + 7]

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

this.Controls.Find("picCard" + 7, true)
于 2012-11-01T23:17:49.973 回答