Entwickler-Ecke
C# - Die Sprache - Problem bei der int Konvertierung
RedSkull - Fr 21.12.07 16:40
Titel: Problem bei der int Konvertierung
Hallo zusammen
Wir haben folgendes Problem. Bei der dieser Int-Konvertierung bekommen wir eine Fehlermeldung, wisst ihr an was das liegen könnte?
Fehlermeldung:
Eine nicht behandelte Ausnahme des Typs "System.InvalidCastException" ist in mscorlib.dll aufgetreten.
Zusätzliche Informationen: Unable to cast object of type 'System.Windows.Forms.TextBox' to type 'System.IConvertible'.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63:
| using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO;
namespace DatenverwaltungSportverein { public struct struMitglieder { public int iMitgliedernummer, iPLZ; public double dMitgliederbeitrag; public string sVorname, sNachname, sStrasse, sOrt, sSportart, sMitgliedsart; public DateTime dtGeburtsdatum; public bool bBezahlt; } public partial class FrmMain : Form { List<struMitglieder> m_Mitglieder = new List<struMitglieder>();
private void ErstelleObjektInDynamicList() { struMitglieder MG = new struMitglieder();
MG.iMitgliedernummer = Convert.ToInt32(txtMainMitgliedsnummer) + 1; MG.sVorname = Convert.ToString(txtMainVorname); MG.sNachname = Convert.ToString(txtMainName); try { MG.dtGeburtsdatum = Convert.ToDateTime(txtMainGeburtsdatum); } catch { MessageBox.Show("Bitte gültiges Datum eingeben.\nz.B. 06.06.1966"); } MG.sStrasse = Convert.ToString(txtMainStrasse); MG.iPLZ = Convert.ToInt32(txtMainPLZ); MG.sOrt = Convert.ToString(txtMainOrt); try { MG.dMitgliederbeitrag = Convert.ToDouble(txtMainMitgliederbeitrag); } catch
{ MessageBox.Show("Bitte Zahl eingeben."); } MG.bBezahlt = Convert.ToBoolean(cbMainBezahlt); MG.sMitgliedsart = Convert.ToString(txtMainMitgliedsart); MG.sSportart = Convert.ToString(txtMainSportart);
m_Mitglieder.Add(MG); } } |
Moderiert von
Christian S.: Code- durch C#-Tags ersetzt
Robert.Wachtel - Fr 21.12.07 16:44
Willst Du die Textbox oder deren Inhalt konvertieren?
C#-Quelltext
1:
| myIntegerVar = Convert.ToInt32(myTextBox.Text); |
RedSkull - Fr 21.12.07 17:00
Wie wollen den Inhalt konvertieren und ein Autoinkrement um eins erhöhen.
JüTho - Fr 21.12.07 17:04
Naja... Roberts Hinweis ist zwar korrekt, aber für die Praxis nicht gut genug.
@RedSkull
Das ist ein Zeichen für Dich, dass Du immer - IMMER! - auf die richtigen Datentypen achten musst. Für Grundlagen empfehle ich z.B.
OpenBook C# [
http://www.galileocomputing.de/openbook/csharp/] und
OpenBook Visual C# [
http://www.galileocomputing.de/openbook/visual_csharp/].
Generell ist die jeweilige
TryParse-Methode anstelle der
Convert-Klasse zu empfehlen. Wieso bist Du sicher, dass in der TextBox wirklich eine gültige Zahl eingegeben wurde?
C#-Quelltext
1: 2: 3:
| int myIntegerVar; if (! Int32.TryParse(myTextBox.Text, myIntegerVar) ) myIntegerVar = -1; |
Und ein Text, der schon vom Typ String ist, braucht natürlich nicht konvertiert zu werden:
C#-Quelltext
1:
| MG.sOrt = txtMainOrt.Text; |
Außerdem ist selten eine Fehlermeldung so eindeutig und hilfreich wie die von Dir genannte. Jürgen
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!