Zitat: |
In diesem Zusammenhang frage ich mich, ob man die Main-Methode aus Program.cs in die Forms1.cs verschieben kann? Das das gehen könnte, habe ich zumindest so verstanden. Da ich später mittels der Werte von Feldern/Variablen die Bilder/GDI von Form1 verändern will, wäre dies wohl sinnvoll. |
Nein sollte man nicht und hilft bei dem was du vorhast nicht. Dir scheint der Unterschied zwischen einer Klasse und der Instanz einer Klasse nicht klar zu sein.
Main ist ein eindeutiger Einsprungpunkt der muß also zwangsweise statisch sein (damit er zum Start der Anwendung auch eindeutig erreichbar ist). Deine angezeigte Form ist aber die Instanz irgendeiner Form Klasse und ist damit nicht statisch. Aus einer statischen Methode kannst du aber nur andere statische Dinge ansprechen die Daten einer Instanz sind dir erstmal versperrt. Du kommst an die Daten der Instanz nur über die Instanz und zwar nur an die Daten die diese Instanz auch veröffentlicht hat (das Ding mit den Sichtbarkeiten).
Dein Code gehört aber auch einfach nicht in die Main. Du hast den bei deiner letzten Frage hinter den Aufruf von Application.Run gepackt. Da ist es mehr oder weniger toter Code.
Die Form die du an Application.Run übergegeben hast ist diejenige die die Lebenszeit deiner Anwendung steuert. Die Anwendung hängt sozusagen in Application.Run und führt darin alle Events aus die der User so ausführt. Erst wenn diese Form geschlossen wird kommst du in den Code den du hinter Application.Run geschrieben hast.
Dein Code gehört in die von Application.Run angezeigte Form udn zwar in den instanz Teil nicht in irgendwas statisches. Das übliche wäre wenn du Code ausführen willst der zur Form gehört (hier ist das eindeutig so da diese Form ja deine Hauptform der Anwendung ist die die Lebenszeit steuert) das im Load Event (der wird vor dem anzeigen ausgeführt) oder im Shown Event (der wird direkt nach dem ersten anzeigen) der Form zu machen.
Das wird auch das Problem sein warum dein show() Code nicht funktioniert. Der wirkt auf die Form die du nach Application.Run erzeugst und glaubst zu sehen. Du siehst auf dem Bildschirm aber die Form die du an Application.Run übergeben hast (Das ist eine andere Instanz der Klasse) und bei der fürst du diesen Code nicht aus.