Zitat: |
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| try { zahl1 = Convert.ToDouble(TextBoxZahl1.Text); .... } catch (FormatException) { MessageBox.Show("Bei der Konvertierung von Zahl 1 ist ein Fehler aufgetreten " + zahl1); .... } | |
Ich kann nicht beurteilen ob das alle Fehler in deinem Code sind aber der zitierte Code Ausschnitt wird definitiv nicht funktionieren.
Du weißt im try Block zum ersten mal der Variablen zahl1 etwas zu. Da bei der Zuweisung etwas schiefgehen kann ist am Ende des try nicht sichergestellt das zahl1 auf irgendwas zugewiesen ist. Du willst zahl1 aber im catch Block benutzen das wird der Compiler aus dem genannten Grund 'der Variablen ist möglicherweise nichts zugewiesen' verhindern und nicht kompilieren. Du solltest auch eine eigentlich verständliche entsprechende Fehlermeldung dazu bekommen 'use of unassigned local variable' oder so.
Zur Lösung solltest du da einfach den Inhalt der TextBox anzeigen. Die Exception tritt ja auf wenn der Text in der TextBox nicht konvertierbar ist. Das Ziel der nicht möglichen Konvertierung wird dir da also nie helfen, weil du die nicht hast. Wenn du die hättest hätte die Konvertierung funktioniert. Also den TextBox Inhalt anzeigen.
Alternativ zu Convert.ToDouble solltest du dir auch mal
Double.TryParse ansehen. Da hier eine Fehler wahrscheinlich ist, ein User darf ja eingeben wozu auch immer er Lust hast, solltest du eine Methode ohne Exception praferieren.
Zitat: |
C#-Quelltext 1: 2:
| private void Pruefen(TextBox TextBoxZahl1, TextBox TextBoxZahl2) { | |
Ich vermute mal die Controls auf der Form heißen auch TextBoxZahl1 und TextBoxZahl2. Das solltest du nicht so tun, oder bist du dir jetzt in der Methode sicher ob du die übergebenen Parameter oder die auf der Form liegenden Controls benutzt?
Entscheide dich eindeutig in den Methoden ob du auf die Controls der Form zugreifen willst oder du die als Parameter übergeben willst. Mach aber nicht beides.