MessageBox der Exception soll in den Vordergrund, aber wie?



  • Hi!

    Wenn in einem try-Teil eine Exception ausgelöst wird, so erscheint eine MessageBox.
    Diese Meldungen erscheinen mal im Vordergrund, mal im Hintergrund (wo ich sie nicht sehen kann).
    Das ist unpraktisch...

    Wie kann ich diese Meldungen zwingen im Vordergrund zu erscheinen?

    throw gcnew Exception("Fehler!");
    


  • try
    {
    something
    }
    catch (Exception^ e)
    {
    MessageBox::Show(L"Das ist ein Fehler!", L"Fehler");
    }
    

    oder

    try
    {
    int a = 4;
    int b = 0;
    if (b == 0)
      throw gcnew Exception::ZeroDivison(); //weiß jetzt nicht genau, wie diese Ausnahme heißt
    else
      int c = a/b;
    }
    catch (Exception::ZeroDivision^ e)
    {
    MessageBox::Show(L"Du Nase willst wirklich durch Null dividieren?");
    }
    


  • Hmm, wenn ein Fehler auftritt in dem try-Zweig, dann habe ich verschiedene Texte gesetzt:

    throw gcnew Exception("Fehler!");
    // später woanders...:
    throw gcnew Exception("Anderer Fehler!");
    

    mein catch sieht so aus:

    catch(Exception^ e)
    {
    	MessageBox::Show(e->Message, "Fehlermeldung", MessageBoxButtons::OK, MessageBoxIcon::Error);
    }
    

    Wie geht das da, wenn ich das "e->Message" gerne behalten möchte?



  • Dein e->Message ist genau das, was du vorher geworfen hast! Also der String^ eben, den du mit

    gcnew Exception(String^ messageText)
    

    erzeugt hast.



  • Das ist mir schon klar. 😉

    Nur wie bekomme ich das Fenster in den Vordergrund?
    Und was bedeutet bei dir vor dem String das "L"?



  • nibbler schrieb:

    Das ist mir schon klar. 😉

    Wollt's nur nochmal erwähnt haben! 😉

    nibbler schrieb:

    Nur wie bekomme ich das Fenster in den Vordergrund?

    Normal macht das die MessageBox doch selber? Also bei mir zumindest!! 😃

    nibbler schrieb:

    Und was bedeutet bei dir vor dem String das "L"?

    Ähmmm..... Ich wusste es mal.... Gibt glaub an, in welchem Format (Unicode/ASCII) der String sein soll..... Weiß es aber nicht mehr sicher!



  • Manche MessageBoxen kommen in den Vordergrund, ander nicht.
    Das sollte doch bestimmt nicht so sein...?!



  • Nee, dass sollte so nicht sein...

    Gegenfrage: Hast du mehrere Fenster offen? Die MessageBox wird nämlich nur vor dem Object (Form) angezeigt, dass die ausnahme abfängt.
    Falls du also von Form1 ne andre Form (Form2) mit ShowDialog aufrufst, dann einige Daten von Form2 nach Form1 schiebst und es fliegt ne Exception, kann es sein, dass die Exception "vor" Form1 gezeigt wird, aber da Form2 als ShowDialog angezeigt wird, bleibt die MessageBox sozusagen zwischen Form1 und Form2.... Ist dann eben nicht sichtbar, falls Form2 recht groß ist...
    Hoff das war verständlich??



  • Ja, das war verständlich.

    Die Exception tritt in einer Dll auf, die ich in der Gui verwende.
    Beide sind ein einem Projekt programmiert.



  • Äh. Es gibt aber in .NET schon auch irgendwie die Möglichkeit die MessageBox "system modal" zu machen, oder?
    Dann müsste das Problem gegessen sein denke ich mal.


Anmelden zum Antworten