Such mal hier oder per Google nach "Kommunikation zwischen zwei Forms". Da gabs mal einen Artikel, bloß weiß ich nicht mehr wo.
Allerdings würde ich das hier nicht so lösen, dass die eine Form die andere Form aufruft und der dann sagt, die soll mal den Login machen.
Denk daran: Logik immer von der GUI trennen
Besser ist, wenn die GUI dann weiß, wo welche Logik zu finden ist und dann dort Bescheid gibt, dass der Nutzer das und das gemacht haben will. Das Objekt der Logik-Klasse macht dann wie es soll und gibt der GUI danach die Ergebnisse zurück.
Was deinen Login angeht:
Ich würde hin gehen und über
Singleton zentral ablegen, wer gerade angemeldet ist. So kannst du dann immer statisch abfragen, welche Rechte gerade gelten.
Um das schrittweise zu erklären, fange ich mal beim Programm-Start an (die Singleton-Klasse nenne ich einfach CurrentUser):
01. Programm startet und CurrentUser wird mit Gast-Rechten initialisiert
02. Gesamte GUI wird initialisiert
03. GUI fragt nach Rechten, findet Gast-Rechte, zeigt entsprechend an
04. Nutzer will sich einloggen klickt auf "Login"
05. GUI ruft in CurrentUser die Methode "StartNewLogin" auf
06. CurrentUser stößt den eigentlichen Login-Mechanismus an
07. LoginMechanism wickelt Login ab und gibt CurrentUser die neuen User-Informationen
08. CurrentUser erhält die neuen Daten und sagt jedem Objekt, das auf das Event UserRightsUpdated horcht, Bescheid
09. GUI erhält die Info, dass ein neuer User da ist, fragt Rechte erneut ab und stellt sich angepasst dar
10. User meldet sich ab, klickt auf "Logout"
11. GUI ruft "Logout" von CurrentUser auf
12. CurrentUser stellt seine Rechte wieder auf Gast und informiert Alle über das gleiche Event
13. GUI erhält die Info und stellt sich entsprechend neu dar
Und so weiter.
Oder bei jedem Rechte-Wechsel wird die Form neu dargestellt, das wäre einfacher, finde ich aber nicht gut, weil das dann in einem kurzen Flackern zu sehen wäre.
Was du auch noch einbauen kannst ist ein Log-System. CurrentUser teilt dann diesem Log-System immer mit, wenn sich ein Nutzer anmeldet oder abmeldet, damit das Log-System das dann protokollieren kann. Das wäre bei sensiblen Daten dann sinnvoll, damit man nach schauen kann, wer dann eingeloggt war.
Es gibt sicherlich ein besseres Vorgehen, aber das finde ich einfach und praktisch.