2016-09-13 3 views
0

Я пытаюсь создать файл .txt, который я могу открыть с помощью своей программы, и сохранить все числа в двух разных массивах, разделив их. Но по какой-то причине верхняя часть никогда не меняет BackColor.Невозможно изменить BackColor массива PictureBox

Вот код:

 PictureBox[,] Field = new PictureBox[4, 4]; 
     int[,] Block_Property = new int[4, 4]; 

     for (int x = 0; x < 4; x++) 
     { 
      for (int y = 0; y < 4; y++) 
      { 
       Field[x, y] = new PictureBox(); 
       Field[x, y].Size = new Size(64, 64); 
       Field[x, y].Location = new Point(x * 64, y * 64); 
       this.Controls.Add(Field[x, y]); 
      } 
     } 

     string Text; 
     int Zahler=0; 

     using (StreamReader sr = new StreamReader("Level/1-1.txt")) 
     { 
      Text = sr.ReadToEnd(); 
     } 

     string[] Feld = Text.Split(';'); 
     for(int x = 0; x < 4; x++) 
     { 
      for(int y = 0; y < 4; y++) 
      { 
       if(Feld[Zahler] == "1") 
       { 
        Field[x, y].BackColor = Color.Black; 
       } 
       Zahler++; 
       if (Feld[Zahler] == "1") 
       { 
        Block_Property[x, y] = 1; 
       } 
       Zahler++; 
      } 
     } 

Это как выглядит мой .txt Файл:

1;1;1;1;1;1;1;1;  
1;1;1;1;1;1;1;1;  
1;1;1;1;1;1;1;1;  
1;1;1;1;1;1;1;1; 

Вот как это выглядит после того, как я начала программу:

How it looks after I start the program

ответ

0

X должен быть Y

for (int y = 0; y < 4; y++) 
      { 
       for (int x = 0; x < 4; x++) 
       { 
        if (Feld[Zahler] == "1") 
        { 
         Field[y, x].BackColor = Color.Black; 
        } 
        Zahler++; 
        if (Feld[Zahler] == "1") 
        { 
         Block_Property[y, x] = 1; 
        } 
        Zahler++; 
       } 
      } 
+0

Теперь 3 Белый PictureBoxes один левый боковой вместо верхней – Dolfos

0

Вы можете попробовать это вместо жесткого кодирования х и у массива, а у и х должны быть переключатель

 for (int y = 0; y < Field.GetLength(0); y++) 
     { 
      for (int x = 0; x < Field.GetLength(1); x++) 
      { 
       if(Feld[Zahler] == "1") 
       { 
        Field[x, y].BackColor = Color.Black; 
       } 

       Zahler++; 

       if (Feld[Zahler] == "1") 
       { 
        Block_Property[x, y] = 1; 
       } 

       Zahler++; 
      } 
     } 
+0

Теперь 3 белых фотобокша - одна из левых, а не верхняя – Dolfos

Смежные вопросы