Messagebox beim Beenden



  • @Hermann Halle:
    Wer sich einmal bemüht die Hilfe anzuschauen, trifft sofort auf ein aussagekräftiges Beispiel:
    http://msdn.microsoft.com/en-us/library/0x49kd7z.aspx

    Und der DialogResult ist keine Zahl, sondern ein Enum (und hier ist sind auch nochmals Beispiele!):
    http://msdn.microsoft.com/en-us/library/system.windows.forms.dialogresult.aspx
    Oder wo siehst Du das Zahlen???

    Also spätestens nach zwei Klicks hat man genügend Beispiele... aber es ist ja einfacher hier zig-Mal zu Posten, als zweimal zu klicken und selber nachzudenken...



  • Hermann Halle schrieb:

    Was ist das für eine blöde Aussage?

    hart aber korrekt

    Wenn Sie ihren Autoführerschein machen wollen, müssen Sie schon wissen wie man ein Auto fährt, sagte der Fahrlehrer und schickte mich aufs Fahrrad zurück.

    nein ... der Fahrlehre sagt nur wo Kupplung, gas und bremse zu finden ist ... Auto fahren musst Du selber lernen ... also das Zusammenspiel zwischen Kupplung, Gas und Bremse ... das hat was mit Motorik zu tun

    gleiche mit den Methodendeklarationen ... Dir wurde gesagt mit F1 findest Du die Hilfe ... den Umgang kannst aber nur Du alleine lernen

    Echt ein tolles Forum hier.

    jap 👍

    Abort = 3
    Cancel = 2
    Ignore = 5
    No = 7
    None = 0
    OK = 1
    Retry = 4
    Yes = 6
    

    wozu dieser riesige Umweg?? ... die Methode liefert was viel schöneres zurück ... dann lässt sich der Quelltext auch besser von Fremden lesen



  • @mogel: Hast Du überhaupt schon mal eine Frage hier im Forum richtig beantwortet oder nur die Leute mit schlauen Antworten zurechtgewiesen?

    http://www.c-plusplus.net/forum/viewtopic-var-t-is-243043-and-highlight-is-.html

    Tolle Hilfe von Dir, aber Du wusstest auf sicher die Antwort selber nicht, aber Deinen Senf hast Du ja dazu gegeben, ist wichtig, der Zähler wieder um 1 hoch gegangen.
    Hast ja nun schon 33 Beiträge, ich bin stolz auf Dich.

    Ihr schießt hier mit Kanonen auf Spatzen.
    Und das Forum ist nicht mehr Jap, es war mal Jap aber das ist schon lange vorbei.

    Die Beiträge werden zu recht immer weniger, bis bald keine mehr da sind.

    Jap und ein 3 mal Hoch...



  • Versteht hier keiner das Jochen und mogel doch Vollkommen recht haben. Die Doku ist so umfassend das sich solche kleinigkeiten von alein ergeben sollten wenn man die passenden pfade bekommt. Ich finde hier nichts überheblich oder unpassend. Jochen wollte nur einen kleinen Schups geben das man selbst auf das ergebniss kommt und es auch selbst versteht.

    In einigen Firmen wird sogar komplett auf hilfe geschissen...

    Und das Forum hier hat mich schon sehr weit gebracht. In anderen Foren bekommt man vieleicht schnellere antworten aber nicht so Hilfreiche 😉



  • Hallo Leute!

    Diese Diskussion ist unnötig.

    Von einem Forum erwarte ich Hilfe, wie sie von Hermann Halle kommt.
    Dafür schon mal ein großes DANKE.

    Sollte ich mich irgendwann mal auf C++ spazialisieren,
    werde ich die Hilfe von MS in Anspruch nehmen.

    Ich kann aber nicht alles auf einmal lernen.

    Also nichts für Ungut und noch einen schönen Sonntag, Chris



  • Hey Leute,

    also was ich von einem Forum erwarte ist ebenfalls Hilfe, keine 9-mal-klugen Antworten, das bringt Niemanden weiter.

    Und ja, natürlich ist die Doku so umfassend, aber ab und zu muss man den Leuten halt vorwerfen das sie nicht genug gesucht haben, NA UND?!
    Trotzdem kann man Ihnen doch helfen, wenn es so "leicht" ist oder?!

    Eine rasche Hilfe würde uns hier sowas auch ersparen 😉
    *trotzdem meinen Senf dazu geben muss* 😃
    Denn solangsam vermüllt JEDES Forum mit solchen Beiträgen...die Niemand, aber auch wirklich Niemand gebrauchen kann....in diesem Sinne...

    Hoffe Chris, dir konnte geholfen werden, wenn noch was unklar ist, lass dich nicht humpen, wenn Google keine gewünschten Ergebnisse ausspuckt 😉

    Greez
    DaMapfi



  • Hallo!

    Ich habe wirklich noch eine Frage.

    private: System::Void Form1_FormClosing(System::Object^  sender, System::Windows::Forms::FormClosingEventArgs^  e) 
    			{
    					int antwort_dialog = 0;
    
    					antwort_dialog = Convert::ToInt16(MessageBox::Show("Möchten sie das Programm wirklich schließen?","Programm beenden!", MessageBoxButtons::YesNo, MessageBoxIcon::Warning));
    
    					if(antwort_dialog == 6)
    					{
    						this->Close();
    					}
    			}
    

    Der Compiler meldet keine Fehler,
    aber die Box verhält sich nicht so,
    wie ich es gerne hätte.

    Beim Schließen kommt der Dialog,
    welcher die Optionen Ja/Nein bietet.

    Beim Klick auf Ja bleibt die Form und der Dialog offen,
    es passiert also nicht das Gewünschte (nämlich Form und Dialog beenden).

    Beim Klick auf Nein werden allerdings Form und Box geschlossen.

    Was muss ich denn da ändern?

    Danke, Chris



  • Mach das nicht so, das war nur ein Beispiel.
    Nimm DialogResult.
    Bist Du mal mit dem Debugger durchgegangen?
    Ich vermute mal, er gibt einen anderen Wert als 6 zurück.

    Aber nochmal, mit dem int war nur ein Beispiel.

    == ::DialogResult::Yes
    

    Take this...



  • Hier mal meine komplette Methode

    Take this:

    private: System::Void Form1_FormClosing(System::Object^  sender, System::Windows::Forms::FormClosingEventArgs^  e) {
    				 System::Windows::Forms::DialogResult result;
    				 result = MessageBox::Show("Soll das Porgamm wirklich beendet werden?","Meldung",MessageBoxButtons::YesNo);
    				 if(result == System::Windows::Forms::DialogResult::No)
    				 {
    					 e->Cancel::set(true);
    				 }
    				 if(result == System::Windows::Forms::DialogResult::Yes)
    				 {
    				 } 
    			 }
    

    ^^^^^^^^^^^getestet^^^^^^^^^
    ei mir funzt es 😉



  • ...
    if(result == System::Windows::Forms::DialogResult::Yes)
    {
    }
    ...

    Natürlich kannst Du das daraus nehmen, wie Du siehst, tut es ja nichts..lol
    Bloß ein unnützes Überbleibsel meines Tests... 🤡

    Greezes
    DaMapfi



  • Hallo!

    Danke für eure Hilfe,
    aber ich sehe gerade, das ich totalen Unsinn programmiere.

    Beim Schließen kommt ja auch noch der Dialog vom Beenden aus dem menuStrip.

    Tja, nun wird es mir doch zu kompliziert.

    Kann ich eventuell irgendwo verhindern,
    das das Kreuz oben rechts in der Form eine Funktion hat?

    Danke, Chris



  • Also Moment mal Chris..

    Was willst du genau machen? Habe ich das richtig verstanden: Du willst beim schließen deines Programmes eine MessageBox aufpoppen lassen, mit der Frage ob man das Programm wirklich schließen will?



  • Hallo!

    Ganz genau.

    Ich verweise mal auf mein Forum, damit es verständlicher wird.
    http://www.personalbit.de/modules/newbb/viewtopic.php?topic_id=1080&forum=8

    Ist jetzt nicht die Top-Anwendung, aber ich bin stolz drauf.

    Sie läuft auch und das Programm kann man über Datei->Beenden schließen.
    Dann kommt auch der Dialog, welcher funktioniert.

    Beim Klick auf das Kreuz, oben rechts,
    hätte ich diesen Dialog auch gerne.

    Gruß, Chris



  • Der Dialog erscheint IMMER dann, wenn das Event "FormClosing" geraised wird. Logischerweise auch dann, wenn man es über das X anklickt, so ist es bei mir jedenfalls der Fall



  • private: System::Void beendenToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e)
    {
    if (MessageBox::Show("Wirklich beenden?","Warnung!", MessageBoxButtons::YesNo, MessageBoxIcon::Warning) == 0)
    {
    this->Close();
    }
    }

    Das hast du noch in deinem Code noch stehen oder?
    Da musst du praktisch nur das this->Close() drinlassen,
    das if-Zeugs kann dort raus.

    Denn: wird this->Close() aufgerufen, raised automatisch das FormCLosing-Event...
    welches wiederurm den gewünschten "wirklich schließen"-Dialog anzeigt.

    Ich hoffe ich habe es richtig erklärt, denn bin auch noch realativ 'neu' in der C++-Sache



  • Hallo!

    Leider sagt mir das jetzt nicht viel.

    Wäre es nicht einfacher zu verhindern,
    das sich das Programm über das Kreuz schließen läßt?

    Gruß, Chris

    PS: Danke für Reg...



  • Ehm also, das kann ich dir leider nicht sage, ich vermute nicht. Also ich wüsste nicht das man spezial das Kreuz als "Schließ-Operanten" ausschließen kann.

    Aber Chris, ich verstehe im moment nicht ganz, wo noch dein Problem ist

    Das einzige, was du brauchst um diesen Dialog anziegen zu lassen is:

    private: System::Void Form1_FormClosing(System::Object^  sender, System::Windows::Forms::FormClosingEventArgs^  e) {
                     System::Windows::Forms::DialogResult result;
                     result = MessageBox::Show("Soll das Porgamm wirklich beendet werden?","Meldung",MessageBoxButtons::YesNo);
                     if(result == System::Windows::Forms::DialogResult::No)
                     {
                           e->Cancel::set(true);
                     }
    }
    


  • DaMapfi schrieb:

    Aber Chris, ich verstehe im moment nicht ganz, wo noch dein Problem ist

    Ich schon, er hat keinen blassen Schimmer von C++/CLI. Aber das hab ich ja schon erwähnt... Naja, mir solls egal sein, solang er noch Deppen findet, die ihm alles vorkauen. Wenn nicht mehr, dann vergeht ihm bestimmt auch ganz schnell die Lust am Programmieren.



  • Aaahhh, jetzt ja, eine Insel.

    Deine Erklärung war Top,
    nur ich stand aufm Schlauch.

    menuStrip

    private: System::Void beendenToolStripMenuItem_Click(System::Object^  sender, System::EventArgs^  e) 
    		 {
    			 this->Close();
    		 }
    

    FormClosing

    private: System::Void Form1_FormClosing(System::Object^  sender, System::Windows::Forms::FormClosingEventArgs^  e) 
    				{
    					System::Windows::Forms::DialogResult result;
    					result = MessageBox::Show("Soll das Porgamm wirklich beendet werden?","Meldung",MessageBoxButtons::YesNo);
    					if(result == System::Windows::Forms::DialogResult::No)
    						{
    							e->Cancel::set(true);
    						} 
    				}
    


  • Moin,

    e->Cancel::set(true);
    

    seit wann werden statische Funktionen auf Methoden aufgerufen??

    private: System::Void Form1_FormClosing(System::Object^  sender, System::Windows::Forms::FormClosingEventArgs^  e) {
      e->Cancel = (MessageBox::Show("Soll das Porgamm wirklich beendet werden?","Meldung",MessageBoxButtons::YesNo) == ::DialogResult::No);
    }
    

    Beim Schließen kommt ja auch noch der Dialog vom Beenden aus dem menuStrip.

    entweder Du rufst etwas doppelt auf ... oder Du hast mehre Handler auf das Closing-Event gelegt ... in Deinem MenüStrip brauchst Du nur this->Close()

    hand, mogel


Anmelden zum Antworten