Forms Anwendung im Konstruktor beenden



  • Hallo!

    Ich werte in einer Unterfunktion, die ich im Konstruktor meiner Forms Anwendung aufrufe, die übergebenen Kommandozeilenparameter aus. Nun brauche ich eine Möglichkeit, die komplette Forms Anwendung bei erfolgreicher Abarbeitung zu beenden. Ich habe es mit this->close() probiert, das gibt allerdings einen Ausnahmefehler. Kann mir jemand weiterhelfen? Danke!



  • Im Konstruktor kannst Du nix beenden...
    Eine Möglichkeit wäre die "main" zu verändern, dass Du z.B. eine separate "Init" Methode aufgerufen wird und wenn diese "true" zurückliefert, dass dann "return" aufgerufen wird. Sonst normal die Form angezeigt wird.
    Du könntest natürlich auch im Konstruktor eine Exception werfen, welche Du im "main" abfängst.



  • Das Problem ist, dass ich anhand der Kommandozeilenparameter bestimmte Funktionen der Forms Anwendung ausführen möchte. Geht das über eine Init Funktion?



  • Gehen tut das schon... Du musst es nur machen!



  • Gibt es dazu irgendwo ein Beispiel? Habe noch keine Idee wie ich das machen kann. Die Funktionen in der main aufrufen habe ich probiert, aber das ging natürlich nicht.



  • dercmdr schrieb:

    Gibt es dazu irgendwo ein Beispiel? Habe noch keine Idee wie ich das machen kann. Die Funktionen in der main aufrufen habe ich probiert, aber das ging natürlich nicht.

    Was brauchst Du denn für ein Beispiel!? Sowas:?

    [STAThreadAttribute]
    int main(array<System::String ^> ^args)
    {
      // Enabling Windows XP visual effects before any controls are created
      Application::EnableVisualStyles();
      Application::SetCompatibleTextRenderingDefault(false); 
    
      Form1 ^frm = gcnew Form1();
      if (args->Length > 0)
        frm->TueIrgendwas(args);
      else
        Application::Run(frm);
      return 0;
    }
    


  • Damit bekomme ich es hin! Besten Dank.
    Gibt es online irgendwo empfehlenswerte Quellen, die die Nutzung von gcnew, die Bedeutung von "^" und sonstige managed Sachen erklären? Da steige ich noch nicht so ganz durch.


Anmelden zum Antworten