Autor Beitrag
blutengel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 59

Win XP, WIN 7
VS#2008 Prof
BeitragVerfasst: Fr 05.03.10 18:42 
Hallo!

Ich habe da ein kleines Problem. Ich will einen Wert aus einer Textbox mit einem anderen Wert aus einer anderen Textbox addieren. Jetzt muss ich ja erst den Inhalt der Textbox in eine Double Variable convertieren, um damit rechnen zu können.Und nach der Berechnung möchte ich das Ergebniss durch drücken des Buttons Berechnen in einer weiteren Textbox ausgeben. Dazu convertieren ich die Double Variable wieder in einen String. Und da liegt mein Problem.Nach dem compilieren kommt das:

ausblenden Quelltext
1:
Fehler1 Eine implizite Konvertierung vom Typ "double" in "string" ist nicht möglich.					

Hier mal der Code:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
 private void btn_berechnen_Click(object sender, EventArgs e)
        {
            double rv;
            double i;
            double uges;
            double ud;
            double ur;
            string str_rv;
            

            
            uges=Convert.ToDouble(tb_uges.Text);
            i=Convert.ToDouble(tb_i.Text);
            ud=Convert.ToDouble(tb_ud);

            rv = uges + i;
            str_rv = Convert.ToString(rv);

            tb_rv.Text = str_rv;

        }


Was mache ich da Falsch? Oder bin ich auch einem ganz falschen Weg?

MFG

blutengel


Moderiert von user profile iconChristian S.: Topic aus WinForms verschoben am Fr 05.03.2010 um 19:45
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Fr 05.03.10 18:48 
Hallo!

Prinzipiell bist Du da schon auf dem richtigen Weg.

Zum einen muss es aber in Zeile 14 wohl tb_ud.Text heißen, zum anderen ist die Verwendung von Convert in diesem Falle unschön (das ist Geschmackssache, aber meiner Erfahrung nach, sehen es die meisten so). Schöner geht es mit den Funktionen Double.Parse und Double.ToString, wobei erstere eine Klassenmethode ist, letzteres eine Instanzmethode.

Beispiel:
ausblenden C#-Quelltext
1:
2:
double uges = Double.Parse(tb_uges.Text);
tb_uges.Text = uges.ToString;


Sehr sinnvoll ist auch die Verwendung von Double.TryParse, welches Dir sagt, wenn eine Konvertierung fehlgeschlagen ist, weil der String gar keine Zahl war:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
double uges;
if (!Double.TryParse(tb_uges.Text, out uges))
{
    MessageBox.Show('Bitte geben Sie eine Zahl ein!');
    return;
}


Was den Fehler angeht, sehe ich den auf Anhieb nicht. Vielleicht erledigt der sich aber schon, wenn Du obige Korrektur (also in Zeile 14) vornimmst.

Grüße
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
blutengel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 59

Win XP, WIN 7
VS#2008 Prof
BeitragVerfasst: Fr 05.03.10 19:44 
Wunderbar Vielen Dank jetzt läuft es.Noch eine Frage zu deinem Beispiel zur abfrage ob eine Zahl oder ein Zeichen eingegeben wurde. Ich wollte nach dem ausgeben der MessageBox mit tb_uges.Clear(); die Textbox löschen.Jetzt kommt aber die Meldung doppelt. Was ist das?
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Fr 05.03.10 19:45 
:nixweiss: Ohne Deinen Quelltext zu kennen, kann ich da unmöglich drauf antworten.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
blutengel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 59

Win XP, WIN 7
VS#2008 Prof
BeitragVerfasst: Fr 05.03.10 20:00 
Sorry. Habe deine Code so übernommen.

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
double uges;
            if (!Double.TryParse(tb_uges.Text, out uges))
            {
                MessageBox.Show("Bitte geben Sie eine Zahl ein!");
                tb_uges.Clear();   
                return;
            }


habe nur das tb_uges.Clear(); noch hinzugefügt.

MFG

blutengel
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Fr 05.03.10 20:02 
Wird der Code zufällig im Change-Ereignis von tb_uges ausgeführt? Dann würde Clear das ja erneut auslösen.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
blutengel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 59

Win XP, WIN 7
VS#2008 Prof
BeitragVerfasst: Fr 05.03.10 20:07 
Ja genau da hast du Recht.Jetzt hab ich es Danke.

MFG

blutengel