So ist die allgemeine Idee ist, dass Sie den Überblick behalten müssen, was in ihrem Umfang ist. Es gibt viele Möglichkeiten, um das zu tun, was Sie tun möchten, aber einige von ihnen sind darauf angewiesen, dass Objekte sich gegenseitig auf eine Weise referenzieren, die Sie vielleicht noch nicht ganz verstehen. Mach dir keine Sorgen - jeder muss das irgendwann durcharbeiten.
Der Grund, warum der Compiler sich beschwert hat, als Sie versucht haben, dieses Member statisch zu machen, liegt daran, dass das Label selbst nicht statisch ist. Da es an eine einzelne MainScreen-Instanz gebunden ist, hat es in einem statischen Kontext keine Bedeutung, der definitionsgemäß ein Bereich ohne eine inhärente Referenz auf eine bestimmte MainForm ist.
Ihre Date-Klasse ist natürlich auch ein völlig anderer Kontext, aber ihre nicht statischen Member haben Zugriff auf eine Instanz von Date. Zwischen diesen beiden Kontexten gibt es keinen Pfad, bis Sie ihn erstellen. Die statische Route hätte tatsächlich funktioniert (schauen Sie sich das Singleton-Muster an: die Idee ist, dass Sie die erste und einzige Instanz einer Klasse statisch speichern und von woanders darauf verweisen), aber wahrscheinlich kein gutes Design. Andere Möglichkeiten, dies zu tun, sind das Übergeben einer Instanz von MainScreen an Date (vorzugsweise über eine Schnittstelle) oder sogar LabelDate selbst. Alle diese könnten die zwei Stücke bekommen, die Sie zusammen brauchen, um zu sprechen.
Allerdings möchte ich vorschlagen, dass Sie darüber nachdenken, wo Ihr Spielzustand gespeichert wird. Ist es in der Bibliothek oder in der konsumierenden Versammlung? Im ersten Fall sollten Sie darüber nachdenken, ein vollständiges GUI-loses Modell der Daten zu erstellen, die in der Bibliotheksklasse gespeichert und bearbeitet werden müssen, und diese vorgefertigten Daten nur so zu verwenden, wie sie in der Hauptanwendung vorhanden sind. Die andere Alternative besteht darin, dass sich Ihr Modell in der Hauptanwendung befindet und nur bei Bedarf zu Ihrer Bibliothek zurückruft. In diesem Fall sollten Sie wahrscheinlich vorerst die Bibliothek um Antworten bitten (oder höchstens auf Ereignisse in der Bibliothek achten) und NICHT erwarten, dass sie allein auf die Anwendung zurückgreift (ob Sie Informationen erhalten oder bereitstellen).
Wenn Sie herausfinden, wie Sie dies tun, werden Sie wahrscheinlich feststellen, dass Ihre Probleme mit der Bereichsverwaltung viel einfacher zu handhaben sind. Sogar ein bisschen gute Architektur kann einen langen Weg zurücklegen.
Aber wenn das alles ein wenig überwältigend ist, betonen Sie es nicht zu sehr. Es hört sich so an, als würdest du das aus Spaß machen, was eine tolle Art zu lernen ist. Sie werden auf solche Probleme stoßen und entweder auf ein gutes Design oder ein nicht so gutes treffen, aber so oder so, Sie kämpfen mit wichtigen Konzepten und werden besser dafür kommen.
Sie können Steuerelemente aus einer anderen Klasse ändern, wenn Sie ein instanziiertes Objekt in der Controller-Klasse haben. – lexeRoy
Tut der Designer das nicht automatisch? –
Können Sie den Code anzeigen lassen (oder ein Codebeispiel würde ausreichen), wo Sie ein anderes Formular aufrufen? – lexeRoy