C# 使用for循环C初始化数组和变量名#

C# 使用for循环C初始化数组和变量名#,c#,arrays,object,for-loop,picturebox,C#,Arrays,Object,For Loop,Picturebox,我很难确定是否可以执行以下操作:我想使用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

我很难确定是否可以执行以下操作:我想使用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);
        }
PictureBox[]picUserCards=新PictureBox[6];
对于(int i=0;i
正如你所看到的,C#会给我一个错误,说picCard在这个上下文中不存在。但是,在VB/VBA中,它将为我连接字符,使我获得picUserCards[0]=picCard1

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

如果有关系的话,表单上已经存在PictureBox(其中12个),因此我想知道如何将它们与数组关联,而不是重新设计表单


编辑:我想有两个数组,一个解决方案是将表单上的所有PictureBox都放在一个数组中,但它不能解决我的特殊问题。我希望能够自己确定有多少对象与给定数组关联。

我假设您使用的容器具有
控件
属性:

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

我假设您使用的容器具有
控件
属性:

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

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

this.Controls["picCard" + 7]
这只适用于直系后代。如果您的控件是嵌套的,您将不得不使用,这将稍微慢一点(对于非性能密集型应用程序,这应该可以忽略不计)


可以按子控件的字符串名称引用子控件:

this.Controls["picCard" + 7]
这只适用于直系后代。如果您的控件是嵌套的,您将不得不使用,这将稍微慢一点(对于非性能密集型应用程序,这应该可以忽略不计)


为什么会有人投反对票?如果你能解释一下原因就好了。如果这个假设是正确的,这将是有效的,这也是我所解释的,并将提供一个解决方案。老实说,我不知道,但我会做一些阅读感谢你的建议。我会尝试你的答案,当我有机会再次编码后!如果我没弄错的话,这段代码不会把我所有的PictureBox放在同一个数组中吗?最后我想要两个阵列,picUserCards和picHouseCards。另外,我得到了一个铸造错误(见我在ean5533回答中的评论),基本上说它不能隐式地将类型控件转换为类型PictureBox。为什么会有人投票反对呢?如果你能解释一下原因就好了。如果这个假设是正确的,这将是有效的,这也是我所解释的,并将提供一个解决方案。老实说,我不知道,但我会做一些阅读感谢你的建议。我会尝试你的答案,当我有机会再次编码后!如果我没弄错的话,这段代码不会把我所有的PictureBox放在同一个数组中吗?最后我想要两个阵列,picUserCards和picHouseCards。另外,我得到了一个强制转换错误(见我在ean5533回答中的评论),基本上说它不能隐式地将类型控件转换为类型PictureBox。谢谢!我会尽快尝试(我和妻子现在已经从“我编码”切换到“我们看东西”)。不幸的是,picUserCards[I]=this.Controls[“picCard”+(I+1)];给出以下错误:错误1无法将类型System.Windows.Forms.Control隐式转换为“System.Windows.Forms.PictureBox”。存在显式转换(是否缺少强制转换?)Intellisense向我显示了picCard1、picCard2等。因此,我推断范围不是问题(意味着我不需要.Find)。那么
控件
只是
控件
对象的列表
PictureBox
是控件的一个子类,因此如果要分配结果,则需要执行显式强制转换。类似这样的东西:
picUserCards[i]=(PictureBox)this.Controls[“picCard”+(i+1)]漂亮!这正是我所需要的,它就像一个符咒。谢谢你的帮助,我是C#新手,有时我的想法比我的实际技能或知识有点超前谢谢我会尽快尝试(我和妻子现在已经从“我编码”切换到“我们看东西”)。不幸的是,picUserCards[I]=this.Controls[“picCard”+(I+1)];给出以下错误:错误1无法将类型System.Windows.Forms.Control隐式转换为“System.Windows.Forms.PictureBox”。存在显式转换(是否缺少强制转换?)Intellisense向我显示了picCard1、picCard2等。因此,我推断范围不是问题(意味着我不需要.Find)。那么
控件
只是
控件
对象的列表
PictureBox
是控件的一个子类,因此如果要分配结果,则需要执行显式强制转换。类似这样的东西:
picUserCards[i]=(PictureBox)this.Controls[“picCard”+(i+1)]漂亮!这正是我所需要的,它就像一个符咒。谢谢你的帮助,我是C#新手,有时我的想法比我的实际技能或知识有点超前