Form verhält sich komisch



  • So - jetzt bin ich auch angemeldet 🙂

    Bei Splash2 verstehe ich nicht, warum beim Load-Event eben die MessageBox nicht angezeigt wird, sondern erst nach Ablauf der Zeit oder schliessen des Fensters. Das ändert sich auch nicht, wenn man aus dem Load-Event ein Show-Event macht.

    Normalerweise müssten diese beiden Events ja sofort ausgeführt werden, das hängt wohl mit ApplicationContext zusammen - also irgend etwas läuft da auch so nicht rund.



  • Wieso ? Das Verhalten ist gewünscht.

    if(sender->Equals(splashForm)) 
            { 
                ApplicationContext::MainForm = mainForm; 
                ApplicationContext::MainForm->Show(); 
            } 
            else if(sender->Equals(mainForm)) 
            { 
                ApplicationContext::OnMainFormClosed(sender,e); 
            }
    

    Erst wenn SPlashScreen zu geht und das CloseEvent feuert wird die Form getauscht und die Mainform angezeigt.



  • Irgendwie war das Forum weg. Aber das war wohl nur ein Schnellschuss von mir *g*
    Ich hatte natürlich nicht gelesen, welches Form zuerst erscheint... dachte Form1.

    private: System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e) {
    				 MessageBox::Show("Test");
    				}
    

    Das meinte ich (aber hatte da eben die Forms verwechselt - so ist klar, dass da diese MessageBox erst nach schliessen des ersten Fensters auftaucht.



  • Ah jetzt ja 🤡

    Vllt. hat ja noch jemand einen Hinweis auf die Problematik mit dem AppContext - ich hab nun das Gefühl das die Lösung "dirty" ist und hab (noch) nicht das know how das zu beurteilen :o(



  • Ich bin nun nicht auf meinem PC, also kann ich den Link nicht posten, aber da ist sehr aufschlussreiches Material in der Visual Studio Hilfe - speziell unter Klassen ApplicationContext (hätte ich auch früher drauf kommen können). Sieht genauso aus, wie ich mir das erhofft hatte und scheint doch ziemlich clean zu sein. Mehr noch... das Beispiel mit dem Splash-Screen kompliziert das Ganze irgendwie *g*

    Vereinfacht: Man muss keine Form-Klasse in Application::Run starten... es genügt ein Kontext... also eine von ApplicationContext abgeleitete Klasse, in der man dann seine Forms erstellen, verwalten, etc. kann 🙂
    EDIT: ... und natürlich diese dann mit Application::Run starten.

    Heute Nacht hatte ich da noch einen unsinnigen Fehler (irgendwie hat VS wohl ein Problem), aber wenn das heute Abend clean funktioniert, dann poste ich das mal.



  • Macht das die Klasse aus der FAQ nicht ?



  • Sie macht das schon, nur etwas komplizierter (nach meinem Verständnis), da hier die Forms noch im Konstruktor angegeben werden. Aber im Endeffekt kann man in diese abgeleitete Klasse soviele Forms integrieren, wie man will (sowieso) und diese müssen dann nicht zugewiesen werden, etc. Der Context ist die Klasse und nicht, wie ich annahm, das MainForm (war dumm, ich weiss). Innerhalb der Klasse müssen dann einfach die Show/Close-Events so abgefangen werden, dass die Klasse weiss, ob nun wirklich alles geschlossen ist und diese dann eben terminieren kann.

    Und somit ist man doch völlig frei in der Handhabe. Nur habe ich das eben noch nicht getestet und weiss nicht, ob nun auch Update() noch nötig ist, oder eben nicht.



  • Ok, sehe ich noch nicht so den Unterschied 🤡

    Ich habs im Konstruktor lieber weil ich die Klassen dann besser für viele Projekte nehmen kann 🤡 Wäre prima wenn Du den Link posten könntest am abend, in der MSDN verläuft man sich manchmal ober findet die passende stelle einfach nicht 😕



  • Kenne ich *g*
    Und mache ich 🙂

    Und ansonsten hatte ich da nur den Denkfehler (oder auch /pure Dummheit), indem ich mir den überladenen Konstruktor nicht genauer angesehen hatte (naja... den hätte ich auch nicht wirklich zuordnen können). Denn Application::Run gibt es einmal mit einer Form und einmal eben mit einem Kontext. Da ich nur die Forms als Parameter gesehen hatte... dummer Fehler eben 😉



  • So - hier mal der Link:

    ms-help://MS.VSExpressCC.v80/MS.NETFramework.v20.de/cpref17/html/T_System_Windows_Forms_ApplicationContext.htm



  • Verdammt, dachte MSDN = MSDN :o(

    Ist es dieser hier ?:

    http://msdn2.microsoft.com/de-de/library/system.windows.forms.applicationcontext.aspx



  • Genau das ist er, ja 🙂



  • Dann wäre das der passende Link für den FAQ Artikel, aber ich glaub Jochen hängt mich auf wenn ich nachfrag ;o)

    Ok, da steht eigentlich das gleiche wie in dem Artikel der FAQ - ich habs halt umständlich aus dem C# Code zusammen gebaut O🤡 Danke für den Link!



  • Hihi - na wenn ich das so habe, wie ich es mir vorstelle, dann werde ich das posten. Du ja vielleicht auch? 🙂 Somit sollte das ja kein Problem darstellen 😉



  • Knuddlbaer schrieb:

    aber ich glaub Jochen hängt mich auf wenn ich nachfrag

    So schlimm bin ich doch nicht, oder?



  • Nein, sehr nett zuvorkommend und Hilfsbereit, aber irgendwann sicherlich genervt wenn ich als wegen FAQ nachbessern frage 🤡

    Mein Anliegen wäre nun, zur vervollständigung des FAQ Beitrages zum Splashscreen folgenden Link einzufügen:

    http://msdn2.microsoft.com/de-de/library/system.windows.forms.applicationcontext.aspx

    Vielen vielen Dank!



  • Erledigt...



  • Danke schöööön


Anmelden zum Antworten