Für die Feldinitialisierung z.B.
private string[,] fieldArray = new string[8, 8]; // rectangle array
for(int y = 0; y<8; y++)
for(int x = 0; x<8; x++)
fieldArray[x, y} = String.Format("{0}{1}", (char)('A'+ x), y+1);
Wobei ich mich frage, warum du überhaupt diese Strings benötigt (denn diese sind ja direkt aus der Position (x,y) berechenbar)?
Sinnvoller wäre ersteinmal überhaupt die interne Datenstruktur richtig zu definieren (anstatt schon direkt den GUI-Code).
Dein Code könnte z.B. so aussehen:
enum ColorType { Empty, W, B };
enum FigureType { None, P, N, B, R, Q, K };
struct Figure
{
public static readonly Figure Null = new Figure(ColorType.Empty, FigureType.None);
public Figure(ColorType color, FigureType figure)
: this()
{
ColorType = color;
FigureType = figure;
}
public ColorType ColorType { get; private set; }
public FigureType FigureType { get; private set; }
}
// as shortcuts for field initialization
static readonly ColorType W = ColorType.W;
static readonly ColorType B = ColorType.B;
Figure[,] field = new Figure[8, 8]
{
{ new Figure(W, FigureType.R), new Figure(W, FigureType.N), /* ... */ },
{ Figure.Null, /* ... */ },
{ new Figure(B, FigureType.R), new Figure(B, FigureType.N), /* ... */ }
};
(oder evtl. durch eine Methode mithilfe von Schleifen erzeugen)
Dies würdest du dann in eine eigene Klasse packen und dann entsprechende Methoden definieren, um vom GUI-Code aus darauf zuzugreifen.
Der GUI-Code ist nur noch für die Darstellung dar (nicht mehr für die Datenhaltung etc.).