2016-09-13 2 views
0

Ich versuche eine .txt Datei zu erstellen, die ich mit meinem Programm öffnen kann und alle Nummern in zwei verschiedenen Arrays speichern kann, indem ich sie spalte. Aber aus irgendeinem Grund ändert der obere Teil nie die BackColor. HierKann die BackColor eines PictureBox Array nicht ändern

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

Dies ist, wie meine .txt Datei aussieht:

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; 

Hier ist, wie es aussieht, nachdem ich das Programm starten:

How it looks after I start the program

Antwort

0

X sollte Y

sein
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

Jetzt werden schaltet das 3 White PictureBox sind einer der linken Seite anstelle der oben – Dolfos

0

Sie können versuchen, diese statt harte Kodierung der x- und y des Arrays, und y und x benötigen

 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

Jetzt sind die 3 weißen Pictureboxen eine der linken Seite statt der Spitze – Dolfos

Verwandte Themen