Laden...

ProgressBar zeigt niedrigeren Wert als gesetzt wurde

Erstellt von Movementroboter vor 10 Jahren Letzter Beitrag vor 10 Jahren 3.841 Views
M
Movementroboter Themenstarter:in
39 Beiträge seit 2013
vor 10 Jahren
ProgressBar zeigt niedrigeren Wert als gesetzt wurde

Hallo Leute,
ich versuche gerade ein Key Generator zu erstellen. Ich möchte den Wert des Ladebalken abfragen. Wenn der Ladebalken den Wert 100 erreicht soll er mir einen neuen Key generieren.
Das Problem ist das wenn der Ladebalken bei ca. 90% ist generiert er mir ein neuen Key und der Ladebalken setzt sich auf den Wert 0 zurück.
Was mache ich falsch ? Der Ladebalken soll zu 100 % gefüllt sein damit er mir ein neuen Key generiert und der Ladebalken sich zurücksetzten kann.


private void Zugangscodetimer_Tick(object sender, EventArgs e)
        {
            this.progressBarZeit.Increment(1);
            if (progressBarZeit.Value == 100)
            {    
                progressBarZeit.Value = 0;
            }
        }

LG,
M

2.298 Beiträge seit 2010
vor 10 Jahren

Wenn ich deinem Code folge, geht er bis 100 bevor er auf 0 gesetzt wird. - Machst du an anderer Stelle noch etwas mit dem Ladebalken?

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

M
Movementroboter Themenstarter:in
39 Beiträge seit 2013
vor 10 Jahren

Hallo inflames2k,
ich generiere ein neuen Key wenn der Wert des Ladebalken wieder auf 0 gestetzt wird.


Random key = new Random();
            textBoxKey.Text = "" + key.Next(0, 9) + key.Next(0, 9) + key.Next(0, 9) + key.Next(0, 9) + key.Next(0, 9)
            + key.Next(0, 9) + key.Next(0, 9) + key.Next(0, 9) + key.Next(0, 9) + key.Next(0, 9);     
               this.Zungangscodetimer.Start();
        }

Z
403 Beiträge seit 2007
vor 10 Jahren

Hallo Movementroboter,

das ganze habe ich, glaube ich, schonmal beantwortet.

Der Ladebalken wird animiert, das heißt es ist nicht sofort sichtbar wie viel Prozent er anzeigt.

Das kannst du ja leicht prüfen.

Grüße

André

M
Movementroboter Themenstarter:in
39 Beiträge seit 2013
vor 10 Jahren

Hallo TheGear,
habe leider kein Eintrag im Forum gefunden dem dieser Beitrag ähnelt 😦
Habe mein Ladebalken überprüft. Laut der Ausgabe komme ich bis zu dem Wert 100. Warum wird der Ladebalken dann nicht vollständig ausgefüllt ?

LG,
Movementroboter

P
660 Beiträge seit 2008
vor 10 Jahren

Hallo,

wie oft wird denn das Event des Timers gefeuert? (also interval-Wert)

MfG
ProGamer*Der Sinn Des Lebens Ist Es, Den Sinn Des Lebens Zu Finden! *"Wenn Unrecht zu Recht wird dann wird Widerstand zur Pflicht." *"Ignorance simplifies ANY problem." *"Stoppt die Piraterie der Musikindustrie"

M
Movementroboter Themenstarter:in
39 Beiträge seit 2013
vor 10 Jahren

Der Intervall-Wert liegt bei 100

1.696 Beiträge seit 2006
vor 10 Jahren

Der Intervall-Wert liegt bei 100

d.h. innerhalb von 10s muss man den erzeugten Code eigegeben haben? Ist das nicht etwas zu kurz? Hast du schon versucht per Debug.Print auszugeben?

Ich bin verantwortlich für das, was ich sage, nicht für das, was du verstehst.

**:::

2.298 Beiträge seit 2010
vor 10 Jahren

Das beudeted, dein Ladebalken erhält pro Sekunde max. 10 Prozent. - Das macht 10 Sekunden, die es insgesamt nimmt. - Ich vermute jetzt mal einfach ganz stark: In der Sekunde wo der auf 100 gehen sollte, steht er noch auf 90 weil er noch nicht neu gezeichnet hat. - In dem Moment wo er neu zeichnen kann, ist der Wert aber schon wieder 0.

Probiere doch mal ein höheres Intervall. 😉

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

M
Movementroboter Themenstarter:in
39 Beiträge seit 2013
vor 10 Jahren

Hallo
danke erstmal für die vielen Antworten 🙂
habe bereits ein höheres Intervall probiert nur leider zeichnet er den Ladebalken wieder ab 90% neu 🙄
ich poste mal den Quellcode vielleicht habt ihr eine Idee wodran es liegen kann.



private void buttonGenerieren_Click(object sender, EventArgs e)
        {
            Random key = new Random();
            textBoxKey.Text = "" + key.Next(0, 9) + key.Next(0, 9) + key.Next(0, 9) + key.Next(0, 9) + key.Next(0, 9)
            + key.Next(0, 9) + key.Next(0, 9) + key.Next(0, 9) + key.Next(0, 9) + key.Next(0, 9);     
               this.Zungangscodetimer.Start();
        }

        private void Zugangscodetimer_Tick(object sender, EventArgs e)
        {
            this.Zungangscodetimer.Interval = 10;
            this.progressBarZeit.Increment(1);
            if (progressBarZeit.Value == 100) 
           {
               progressBarZeit.Value = 0;
           }
        }


5.658 Beiträge seit 2006
vor 10 Jahren

Hi Movementroboter,

Wenn der Ladebalken den Wert 100 erreicht soll er mir einen neuen Key generieren.

Dein Code macht aber etwas anderes. So wie du es geschrieben hast, wird zuerst ein neuer Key erzeugt und dann der Timer gestartet, der die Progressbar updated. Was ist denn eigentlich der Zweck dieser Progressbar und was hat die mit dem Generieren des Codes zu tun?

Mit dem Debugger solltest du aber recht schnell herausfinden, was in deinem Code in welcher Reihenfolge abläuft und was dabei nicht korrekt ist: [Artikel] Debugger: Wie verwende ich den von Visual Studio?

Christian

Weeks of programming can save you hours of planning

2.298 Beiträge seit 2010
vor 10 Jahren

habe bereits ein höheres Intervall probiert

Lustig, du hattest erst 100 und jetzt 10? - Ich denke es ist höher.

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

16.834 Beiträge seit 2008
vor 10 Jahren

Das sieht alles sehr unsicher aus.
Wenn es um eine Zwei-Faktor-Authentifizierung geht dann würde ich Google-Style auf Base32 setzen.

3.825 Beiträge seit 2006
vor 10 Jahren

Hallo Movementroboter ,

das ist eine Eigenschaft der Winforms-Progressbar dass sie nicht immer alle Werte anzeigt.

Wenn sie bis 100% laufen soll dann musst Du die 100% 2 oder 3 mal anzeigen, dann passt es.

Oder, was besser aussieht, eine eigene Progressbar bauen :

Graphics g = this.CreateGraphics();
g.FillRectangle(new SolidBrush(Color.LightGray), 350, 653, (float)619.0, 9);
g.FillRectangle(new SolidBrush(Color.FromArgb(255, 115, 0)), 350, 653, (float)(619.0 / 100.0 * prozent), 9);

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3

A
7 Beiträge seit 2013
vor 10 Jahren

Hallo Movementroboter

Das Problem hatte ich vor kurzem auch und refresh etc hat da nicht viel genützt.

Meine Lösung war dann einfach, dass ich statt von 99 auf 100 nicht + 1 sondern -1 +2 gemacht habe... Ich kann mir nicht genau erklären warum mir das half aber jetzt wird der Wert des Balkens auf jeden Fall richtig angezeigt.

Gruss Angandi