Entwickler-Ecke
WinForms - DataGridView
Poal - Mo 16.07.12 13:07
Titel: DataGridView
Hi Leute,
ich versuche mal wieder eine Kleinigkeit und bin leider wieder auf ein mir sehr komisches Problem gestoßen. Ich poste mal sinngemäß mein Problem.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| decimal umwandl1 = 17; decimal umwandl2 = 489; decimal ergeb3 = ((umwandl1 / umwandl2)*100); string ergeb2 = Convert.ToString(String.Format("{0:f2} %", ergeb3)); dataGridView2.Rows[0].Cells[7].Value = ergeb2; |
Hier soll eine Prozentzahl heraus kommen, was auch passiert. Jedoch kommt in der MessageBox das korrekte Ergebnis und in dem DataGridView das falsche heraus....
Seh ich den Wald vor lauter Bäumen nicht oder hab ich einen gravierenden Fehler gemacht?
Würde mich sehr über Vorschläge freuen :-)
Moderiert von
Christian S.: C#-Tags hinzugefügt
Ralf Jansen - Mo 16.07.12 14:36
| Zitat: |
| Seh ich den Wald vor lauter Bäumen nicht oder hab ich einen gravierenden Fehler gemacht? |
Direkt Gridzellen zu manipulieren ist sicherlich ein Fehler. Das mag funktionieren ist aber aufgrund des manuellen Aufwands die richtige Zelle zu treffen fehleranfällig.
Deutlich lesbarer und einfacher zu beherrschen sind Listen von Klassen die man einfach ans Grid bindet. Wahrscheinlich fällt dir, wenn du es dahingehend änderst, auch auf das du einfach nur in die falsche Zelle geschaut oder geschrieben hast.
Edit. Ein wenig mehr Geduld wäre mir sympathisch. Auf allen Kanälen nach gerade einer Stunde zu pushen nervt. Danke.
Poal - Mo 16.07.12 14:43
Ok, das mit dem Pushen war mir nicht all zu bewusst und Geduld werde ich nun auch über mich ergehen lassen :-) Hab aber die Richtige Zelle Ausgewählt, da ja das falsche Ergebnis dort angezeigt wird. Das Richtige Ergebnis erhalte ich nur, wenn ich es mir in der Messagebox anzeigen lasse.
Ralf Jansen - Mo 16.07.12 15:30
| Zitat: |
| Hab aber die Richtige Zelle Ausgewählt, da ja das falsche Ergebnis dort angezeigt wird |
Klar! Du siehst das falsche drum muss es die richtige Zelle sein. ;) Die Definition von richtiger Zelle trifft dann vermutlich auf alle Zellen zu.
Wir schauen dir gerade nicht über dich Schulter. Du musst also schon deutlicher werden damit man dir folgen kann. Fangen wir mal bei einer simplen Fragestellung an. Was stand vorher in der Zelle, was hätte nach der Zuweisung drin stehen sollen, was steht statt dessen nach der Zuweisung drin. Vielleicht lässt sich daraus dein Problem ableiten.
Poal - Mo 16.07.12 15:49
Ok, hört sich gut an :-)
also ich habe in einer Zelle die Zahl: 17 und in der andere die Zahl: 489. Nun möchte 17/489 teilen und erhalte in Prozent normalerweise das Ergebnis: 3,48 %.
Ich erhalte jedoch wenn ich dieses Ergebnis zurück in eine freie andere Zelle schreiben will 2,79 heraus...
Zahl 1 | Zahl 2 | Ergebnis
17 489 2,79 %
Messagebox.Show(liefert aber 3,48 %) <-- was ja richtig ist
In der Messagebox erhalte ich das richtige Ergebnis und wenn ich die Variable in das Datagridview übergeben will das Falsche.
Ich lese also Zahl 1 und Zwei als string aus und Converte es zu double. Dann Teile ich Zahl1 durch Zahl2 und erhalte in der Messagebox das richtige Ergebnis.
Wenn ich selber double werte mit 17 und 489 festlege ohne sie aus dem Datagridview aus zu lesen, erhalte ich beim übergeben in die Ergebnis Zelle auch das richtige Ergebnis.
Somit denke ich fast das sich irgendwo ein kleiner konvertierungsfehler eingeschlichen hat.
Kha - Mo 16.07.12 15:51
Bitte ändere noch den Titel des Topics, da er wenig über das eigentlich Thema verrät. Hier der entsprechende Absatz aus den Richtlinien:
| 3.4 Frage formulieren - Der richtige Titel [http://www.entwickler-ecke.de/richtlinien.html]: |
| Formuliere den Betreff deiner Themen so, dass der Leser (und damit möglicherweise dein Helfer) anhand des Titels bereits weiß, worum es in diesem Topic geht. Titel wie z.B. "Eine Anfängerfrage" oder "Weiß jemand, wie das geht?" machen nicht neugierig auf mehr, ehrlich. Auch "HILFEEEE!!!!" hat sich bisher nicht bewährt. Wenn du ein Topic eröffnest ist es höchstwahrscheinlich, dass du Hilfe brauchst. |
Einfach unten in deinem ersten Beitrag auf

klicken und den Titel ändern. Danke dir!
Viele Grüße,
Sebastian
Ralf Jansen - Mo 16.07.12 16:05
Das sollte leicht in deinem Code von dir zu finden sein. Du ließt ja scheinbar selbst die Zellen, aus schreibst sie in Variablen, berechnest den Prozentsatz und weißt sie wieder einer Gridzelle zu. Also einfach mal ein Breakpoint vor den Code setzen, durchsteppen, und schauen ob in den beteiligten Variablen auch das drin steht das du erwartest.
Poal - Mo 16.07.12 16:13
So, Problem gelöst und so wie ich es dachte hab ich wirklich den Wald vor lauter bäumen nicht gesehen :-)
Da ich die Zellen mit einer For schleife ausgelesen habe hab ich vergessen, die Variable i die als zähler dient auch vorerst nicht als Schleife durchlaufen zu lassen und somit das letzte Ergebnis meiner Tabelle in der Ersten Zelle anzeigen lassen :-)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 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!