Entwickler-Ecke

WinForms - Eigene Progressbar... Problem bei Value


Delete - Sa 02.10.10 10:07
Titel: Eigene Progressbar... Problem bei Value
Hey Leute,

ich habe schnell eine eigene Progressbar gebastelt. Jetzt hab ich ein problem:

wenn die value = 100 und Maximum = 100 ist siehtz aus als wenn erst 80 % durchgelaufen währen... ich berechne die vlaue so:

C#-Quelltext
1:
pValue.Width = this.Width / maximum * value                    


kann mir da jemand weiterhelfen?


wäre euch sehr dankbar

LG Fabian


jaenicke - Sa 02.10.10 10:19

Hast du denn einmal im Debugger geschaut welche Werte da zugewiesen werden?

Ich vermute einmal, dass du da Rundungsfehler bekommst. Das kommt darauf an was für Typen deine Variablen und Eigenschaften haben.

Beispiel:
Wenn du nur Integerwerte nimmst, sind 10 / 7 * 6 = 1 * 6 = 6. Das heißt obwohl value = 6 und max = 7 sind, sind durch die Rundung nur 6 von 10 Pixeln gefüllt.


Delete - Sa 02.10.10 10:28

hey danke dir,

habe aber eben weiter probiert und einfach die rechung umgestellt und es funktioniert... hatte ich zwar schonmah probiert aber najah =)

also für alle dies brauchen:

C#-Quelltext
1:
pvalue.width = this.width * value / maximum // =))                    


Danke euch =)

LG Fabian


jaenicke - Sa 02.10.10 10:30

Der Grund ist wie schon gesagt der Rundungsfehler. Denn dadurch, dass du jetzt zuerst multiplizierst und dann die Integerdivision durchführst wird die Rundung erst als zweiter Schritt durchgeführt und nicht vor der Multiplikation. Dadurch wird der Rundungsfehler nicht mit multipliziert. ;-)