findet den fehler

abdi-61

Lieutenant
Registriert
Okt. 2011
Beiträge
519
Hi,

hab mal wieder ein proplem:

Code:
do
            {
            InitializeComponent();
            player = 1;
            
            dlg.ShowDialog();

           
                try
                {
                    Wert = Convert.ToInt16(dlg.textBox3.Text);
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Fehler: " + ex.Message);
                    kontrolle = true;
                }
            } while (kontrolle == true);

also das Programm soll den eingegeben String in eine int zahl konvertieren.
Wenn dies nicht möglich ist soll eine Message box kommen die den Fehler angibt z.B wenn man Buchstaben rein schreibt.
Nun wenn man eine Zahl eingibt funktioniert alles, doch wenn man einen Buchstaben eingibt kommt die Fehlermeldung und das Programm stürzt mit der folgenden Fehlermeldung ab:



kann mir einer erklären wieso ?
 
also bei dialog fenster gibt es keine Exception abfragen, hier der code was in dlg drin steht:

Code:
 {
        string spieler1, spieler2, feldgröße;

        public Window1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            DialogResult = true;
        }

        private void button2_Click(object sender, RoutedEventArgs e)
        {
            DialogResult = false;
        }

        private void textBox1_TextChanged(object sender, TextChangedEventArgs e)
        {
            spieler1 = textBox1.Text; 
        }

        private void textBox2_TextChanged(object sender, TextChangedEventArgs e)
        {
            spieler2 = textBox2.Text; 
        }

        private void textBox3_TextChanged(object sender, TextChangedEventArgs e)
        {
            feldgröße = textBox3.Text;
        }
    }
 
In der Fehlermeldung steht ja drin, dass die Exception im Konstruktor geworfen wird. Steht der Code in deinem 1. Post im Konstruktor?

Warum wird InitializeComoponent() mehrfach aufgerufen?
In der Schleife setzt du immer player = 1; was ist mit den anderen?
Umlaute in Variablen oder Methodennamen sind ein no-go.
 
ja der code 1. post steht im konstruktor ist das ein proplem ?

Warum wird InitializeComoponent() mehrfach aufgerufen?
naja hab das do am anfang über dlg.showdialog() gesetzt als das nicht ging dachte ich mir mach ich es mal über initializecomponent
 
Tipp: mach dich mal mit dem Debugger vertraut. ;)
M.E. hat die richtige Stelle schon genannt, denn dort wird die Exception geworfen, allerdings aus einem anderen Grund. Ich habe mal für dich gegoogelt: Showdialog-on-mef-component-only-works-once
 
sorry aber ich verstehst nicht :S
Also wo das proplem liegt habs jetzt mit dem debugger gemacht und der fehler tritt beim
Code:
dlg.showdialog()
auf, nicht bei der Exception.


hier nochmal ein bild für die profis :)



was auffält es gibt viele ausnahmefehler
 
Noch ein Tipp: Lies dir die Links, die dir andere Posten durch. Da steht nicht selten die Lösung drin.

In dem Bild steht außerdem die zweite Exception drin, die für dein Problem verantwortlich ist. Der "Profi" muss nur lesen und googlen können.
 
Hi,
Wenn du ein Buch oder grad ein Tutorial machst (Ich gehe davon aus, dass die Aufgabenstellung daher kommt), dann schau dir nochmal genau das Kapitel zu Exceptions an, wie man sie fängt und behandelt.

Wie man aus deinem Screenshot erkennen kann, wird nämlich die FormatException aufgefangen.

Probleme gibt es aber bei anderen Exceptions die (anscheinend) etwas mit der GUI zu tun haben, dort werden nicht alle gefangen.
Interessant, ist auch der Fehlertext, dass du Operationen auf einem geschlossenem Fenster ausführen willst.
 
Es handelt sich um eine Hausaufgabe.
 
Zurück
Oben