C# 对于c上没有数组的循环图片库# char SideA='A'; char SideB='B'; int-CPUPlayer=1; Test.Text=x.ToString(); 如果(难度==1) { 如果(CPUPlayer==1) { 字符串targetString=“”; 用于(int-side=1;side

C# 对于c上没有数组的循环图片库# char SideA='A'; char SideB='B'; int-CPUPlayer=1; Test.Text=x.ToString(); 如果(难度==1) { 如果(CPUPlayer==1) { 字符串targetString=“”; 用于(int-side=1;side,c#,for-loop,indexoutofboundsexception,picturebox,C#,For Loop,Indexoutofboundsexception,Picturebox,以帮助您发现问题的变化 PictureBox target = (PictureBox)(this.Controls.Find(targetString, true))[0]; 到 var found=this.Controls.Find(targetString,true); if(found==null | | found.Length

以帮助您发现问题的变化

PictureBox target = (PictureBox)(this.Controls.Find(targetString, true))[0];

var found=this.Controls.Find(targetString,true);
if(found==null | | found.Length<1){
抛出新异常(“未找到图片”)
}

在此之后,在
throw
行中设置一个断点,并找出找不到图片的原因。

因此,原来是我的
.ToString();
逻辑完全错误,字符串显示为不存在的picturebox。这是有效的代码:

            if (difficulty == 1)
        { 
            if (CPUPlayer == 1)
            {

                string targetString = "";
                for (int side = 1; side <= 1; side++)
                { 
                    for (int game = 1; game < 25; game++)
                    {

                        for (int tile = 1; tile < 10; tile++)
                        {
                            targetString = SideA;
                            targetString += game.ToString();
                            targetString += tile.ToString();
                            Test.Text = targetString.ToString();
                            PictureBox target = (PictureBox)(this.Controls.Find(targetString, true))[0];
if(难度==1)
{ 
如果(CPUPlayer==1)
{
字符串targetString=“”;

for(int side=1;side
this.Controls.Find(targetString,true)
在某些情况下是一个空数组。您需要中断
PictureBox target=(PictureBox)(this.Controls.Find(targetString,true))[0]
到多个语句中。将图像缓存在一个数组中,而不是像这样使用
资源中的图像。当一个对象就可以了,并且会导致字符串泄漏时,您不必要地创建了许多对象,我将其编辑掉了,在发布此内容之前,我忘记了将其取出我的坏:(你的评论帮助我意识到什么是错的,非常感谢!
            if (difficulty == 1)
        { 
            if (CPUPlayer == 1)
            {

                string targetString = "";
                for (int side = 1; side <= 1; side++)
                { 
                    for (int game = 1; game < 25; game++)
                    {

                        for (int tile = 1; tile < 10; tile++)
                        {
                            targetString = SideA;
                            targetString += game.ToString();
                            targetString += tile.ToString();
                            Test.Text = targetString.ToString();
                            PictureBox target = (PictureBox)(this.Controls.Find(targetString, true))[0];