C# Visual Studio - Kommunikation zwischen Forms?
Hallo, ich bin ein ziemlicher C# - Anfänger und arbeite momentan an einem Projekt. Dabei habe ich 2 verschiedene Forms. In form1 hat man die Möglichkeit, 6 verschiedene CheckBoxen zu betätigen und gelangt anschließend durch einen Button in form2. In form2 sollen anschließend die jeweiligen Button angezeigt, welche man zuvor in form1 per Checkbox ausgewählt hat (z.B. CheckBox 2 und 6 betätigt -> Button 2 und 6 wird angezeigt). Dabei werden die Steuerelemente von form2 nicht im Quellcode von form1 erkannt. Könnte mir jemand sagen, wie ich in form1 auf die Steuerelemente bzw. Buttons von form2 zugreifen kann? Vielen Dank im Voraus!
1 Antwort
Form-Komponenten werden als private Felder ihrer Form-Klasse angelegt. Es ist von daher nicht verwunderlich, dass auf sie kein Zugriff besteht.
Zwei Lösungsvorschläge:
A)
Du legst je Button ein öffentlich sichtbares Property an (der Zugriff auf den Getter reicht völlig). Des Weiteren braucht Form1 eine Referenz auf das von dir erstellte Form2-Objekt. Über dieses kannst du dann das Property aufrufen und dieses wiederum ermöglicht Zugriff auf den jeweiligen Button.
B)
Da du sicherlich nur die Sichtbarkeit der Buttons ändern möchtest, würde es ausreichen, für Form2 eine öffentliche Methode zu schreiben, die einen bestimmten Button sichtbar macht. Welcher das sein soll, kann ja ein Parameter bestimmen (ein String / eine Zahl von 1-6 / ...).
Nun braucht Form1 nur noch eine Referenz auf das von dir erstellte Form2-Objekt. Über dieses kannst du dann die Methode aufrufen, die einen bestimmten Button ändert.
Falls dir Referenzen, Methoden, Sichtbarkeiten oder Properties noch nicht bekannt sein sollten, schau in die Microsoft Dokumentation und beschäftige dich mit den OOP-Grundlagen (die werden auch hier vorgestellt, beachte aber, dass dieses Buch noch nicht alle Verkürzungen vorstellt, die C# inzwischen bietet - falsch sind die vorgestellten Praktikten dennoch nicht). Die sind für diesen Teil relevant.
Hallo, danke für deine Antwort. Könntest du mir ein kurzes Beispiel verfassen, wie man eine öffentliche Methode für einen gewünschten Button (beispielsweise "button1") für form2 schreibt?
Danke schonmal im Voraus!