Hallo,
du musst unterscheiden zwischen einer Klasse (= Form2) und einem konkreten Objekt (Instanz). Die Definition einer Klasse geschieht mit den
allgemeinen Namen und Festlegungen, die Arbeit innerhalb einer Klasse geschieht mit
konkreten Bestandteilen dieser Klasse.
Ccenter hat folgendes geschrieben : |
also ich habe eine Form1 mit 2 Buttons. Wenn ich auf Button1 klicke, kommt eine Form2. Wenn ich jetzt auf Button2 klicke, möchte ich gerne Prüfen, ob Form2 offen ist oder nicht. |
Du befindest dich in einer Instanz mainForm der Form1-Klasse. Wenn du dort auf Button1 klickst, erzeugst du eine Instanz secondForm der Form2-Klasse. Alles, was danach folgt, wird innerhalb jeder Form1-Instanz mit secondForm gemacht. Damit reduziert sich das Problem darauf, wo alles secondForm benutzt wird und wo es bekanntgemacht (deklariert) wird.
Jason meinte also, dass secondForm nicht nur innerhalb von Button1_Click bekannt sein soll, sondern innerhalb der ganzen Form1-Klasse. Dann ist secondForm überall in einer Form1-Instanz bekannt, also auch innerhalb von Button2_Click. Dort kannst du also die gewünschten Prüfungen vornehmen.
C#-Quelltext
1: 2: 3:
| if ( (secondForm == null) || ( ! secondForm.Visible ) ) ShowMessage("Pech gehabt"); else { } |
Dein Problem hat also fast nichts mit VB oder C# zu tun, sondern mit Klassenaufbau und Geltungsbereich von Variablen. (Letzteres ist zwar eine Sache der Sprache, aber dein Problem würde in VB genauso auftreten.)
Dringende Empfehlung: Arbeite dich grundsätzlich in C# und vor allem auch OOP ein, z.B. anhand der
OpenBooks (dort findest du Visual C#, C#, OOP).
Gruß Jürgen