Hallo und
daß die Namen nicht übernommen werden liegt daran, daß du die 2. Form zwar aufrufst, aber der Programmablauf danach sofort fortgesetzt wird (und dann sind die beiden Namensvariablen ja noch nicht gefüllt).
Verwende anstatt
Show() die Methode
ShowDialog() - diese wartet solange, bis das Fenster wieder geschlossen wird (dies ist dann ein sogenannter "modaler Dialog").
Einige Tipps kann ich dir auch noch geben (damit dein Programm besser wartbar bleibt):
- Packe (wie das interne
grid) die PictureBoxen in ein Array:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| private PictureBox[] pictureBoxes;
public Form1() { InitializeComponent();
pictureBoxes = new PictureBox[] { pictureBox1, pictureBox2, pictureBox9 }; } |
Nun kannst du elegant mithilfe einer Schleife die einzelnen PictureBoxen ansprechen, z.B.
C#-Quelltext
1: 2: 3: 4:
| foreach (PictureBox pb in pictureBoxes) { pb.Enabled = true; } |
- verwende möglichst keine öffentlichen (
public) Felder, sondern nimm dafür Eigenschaften
- und
static sollten deine meisten Variablen auch nicht sein
- nur eine Kleinigkeit:
den Namensbereich
WindowsFormsApplication1 brauchst du nicht zu schreiben, da die Klasse sich ja im selben Namensbereich befindet.
- die
do..while-Schleife bei der Gewinnabfrage blockiert deine GUI (sofern die Bedingung nciht erfüllt ist). In WinForms mußt du ereignisorientiert programmieren!
-
InitializeComponent() sollte nur innerhalb des Konstruktors aufgerufen werden (d.h. entferne diesen Aufruf sowie die
Controls-Schleife). Schreibe besser eine Methode, welche explizit wieder einzelne Controls initialisiert.
- die beiden Forms (für die Spielereingabe) sollten beide von der Hauptform aus aufgerufen werden (und dann reicht es auch, wenn du nur genau eine Spieler-Form erstellst und diese dann aber für jeden Spieler einmal aufrufst - anstatt 2 (fast) identische Form-Klassen zu erstellen). Wenn du für den Namen dann eine Eigenschaft verwendest, so benötigst du dann auch nicht mehr die
public static Namensvariablen in
Form1).
Wenn du mal etwas Zeit (und Muße) hast, kannst du dir mal meinen Artikel
Kommunikation von 2 Forms durchlesen (dieser geht auf einige der oben beschriebenen Tipps ein - besonders Eigenschaften und Ereignisse - und am Ende befindet sich auch ein Beispielprojekt).
P.S: Ich hoffe, ich habe dich jetzt nicht mit der Menge an Informationen abgeschreckt!?