Messagebox beim Beenden
-
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.
-
loooool Heinrich,
ja, da stimm' ich Dir zu...
Aber dann müsste er sich selber
auch als Depp bezeichnen
-
Ich sehe gerade, mein deutsch ist ja so schlecht.
Aber vielleicht kann mir der Herr ja auch noch dabei helfen.
-
hahahaha
Nun, Heinrich...
WIR wollen ja hier Niemandem mobben
Und er will sich sicher auch nicht "vorkauen"
lassen, was er zu tun, und zu lassen hat...Alles in Allem für diesen Thread...Micha:
Einfach mal eine schnelle Hilfe bieten, wenn es die Fragestellung ermöglicht
Greez
DaMapfi
-
Hallo!
Lasst es bitte gut sein.
Ist doch alles paletti
Gruß, Chris