Messagebox beim Beenden
-
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=8Ist 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
-
Naja, mir solls egal sein, solang er noch Deppen findet, die ihm alles vorkauen.
Jetzt sollte eine Admin, oder Mod aber bitte mal tätig werden.
Das muß ja wohl nicht sein.
Gruß, Chris
-
setz Dich mal ein wenig mit VC++ 2008 auseinander, dass es funktioniert ist ja wohl Tatsache lol....man kann es auch so machen:
e->Cancel = true;
Du nennst mich also einen "Deppen"?
Okay, Jeder soll sich Seinen Teil dazu denken, aber solch eine Meinung gehört nicht in solch ein Forum, weil es sowieso sinnlos ist. Demnach wären jegliche Autoren von Tuts, FAQ's etc Deppen, weil sie den Anderen alles vorkauen?!wie auch immer...
In diesem Sinne...
Chris freut mich das es nun endlich klappt
: )
Hand, DaMapfi
-
Hallo!
Danke an den Admin / Mod für die schnelle Reaktion.
Okay, das Programm läuft nun, wie gewünscht.
Danke euch allen.
Sollte mir noch eine Idee zur Erweiterung kommen, melde ich mich wieder.
Schöne Arbeitswoche euch allen und mir eine erfolgreiche Schulwoche.
Chris
-
Ich als Depp freue mich auch das es geklappt hat.
Und noch ein hoch auf den C++ Guru Michael E.
Ich kenne viele A...aber Du könnetst Unterricht gegeben.