Windows Forms: Code direkt nach Programmstart ausführen



  • Hallo,

    ich habe eine Windows Forms Anwendung, in der ein bestimmter Code gleich nach dem Start ausgeführt werden soll, und zwar genau einmal und dann nie wieder. Welches ist die beste Stelle wo dieser Code stehen soll?
    -- Im Konstruktor von Form1, direkt hinter InitializeComponent() ? Sind zu diesem Zeitpunkt schon alle anderen Elemente vorhanden?
    -- Oder in die Ereignisbehandlung Form1_Shown() ?
    -- Oder in eine andere Ereignisbehandlung, wenn ja welche?

    Gruß
    Michael



  • "Die Aufgabe von Konstruktoren ist, Objekte in einen definierten Anfangszustand zu bringen und so benötigte Ressourcen zu reservieren, insofern diese zum Zeitpunkt der Objekterstellung bereits bekannt sind." (https://de.wikipedia.org/wiki/Konstruktoren_und_Destruktoren)

    frage beantwortet?



  • Also wenn ich das richtig verstehe, dann wäre hinter InitializeComponent() die richtige Stelle für meinen Code?

    Gruß
    Michael



  • Nach InitializeComponent() sollte alles da sein.
    Wenn du das Fenster brauchst um das was du machen möchtest zu machen, dann wäre hinter InitializeComponent() vermutlich die beste Stelle. Vorausgesetzt es dauert nicht sehr lange.

    ps: Und wenn du das Fenster nicht brauchst, dann kannst du es auch gleich in der main/run Funktion der Applikation machen. Und wenn es doch sehr lange dauert bzw. dauern kann, dann wird es leider komplizierter 🙂



  • alles klar, danke schön!

    Michael



  • Wenn der Code wirklich direkt nach Programmstart nur einmalig ausgeführt werden soll (und unabhängig von der MainForm ist), dann sollte der Code (bzw. der Aufruf) direkt in die Program.Main-Methode geschrieben werden.

    Edit: Ups, das hat @hustbaer ja schon geschrieben (naja, doppelt hält besser).


Anmelden zum Antworten