2016-09-13 3 views
0

J'essaie de créer un fichier .txt que je peux ouvrir avec mon programme et enregistrer tous les nombres dans deux tableaux différents en les séparant. Mais pour une raison quelconque, la partie supérieure ne change jamais le BackColor.Je ne peux pas changer le BackColor d'un tableau PictureBox

Voici le code:

 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++; 
      } 
     } 

Ceci est la façon dont mon .txt fichier ressemble:

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; 

Voici à quoi il ressemble après avoir commencé le programme:

How it looks after I start the program

Répondre

0

X doit être 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

Maintenant, le 3 blanc PictureBoxes sont un côté gauche au lieu de la partie supérieure – Dolfos

0

Vous pouvez essayer au lieu de coder en dur x et y du tableau, et y et x doivent être changer

 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

Maintenant, les 3 PictureBox blanches sont l'une le côté gauche au lieu du haut – Dolfos