C# Progressbar geht nicht ordentlich

01/17/2013 18:31 __©oⱤly™#1
Also ich hab ma n kleines Programm versucht.
csProgress ist die progressBar.

if (csAnzahlBox.Text != "" && csNameBox.Text != "")
{
count = Convert.ToInt32(csAnzahlBox.Text);
csProgress.Value = 0;
for (int i = 0; i < count; i++)
{
Anweisung1();
Thread.Sleep(1500);
Anweisung2();
progress = (int)(i / count * 100);
this.Invoke(new MethodInvoker(GUIAccess));
}
}

void GUIAccess()
{
csProgress.Value = progress;
csProgress.Update();
}

Allerdings bleibt die Bar immer auf 0...
01/17/2013 18:48 nkkk#2
Quote:
Originally Posted by __©oⱤly™ View Post
Also ich hab ma n kleines Programm versucht.
csProgress ist die progressBar.

if (csAnzahlBox.Text != "" && csNameBox.Text != "")
{
count = Convert.ToInt32(csAnzahlBox.Text);
csProgress.Value = 0;
for (int i = 0; i < count; i++)
{
Anweisung1();
Thread.Sleep(1500);
Anweisung2();
progress = (int)(i / count * 100);
this.Invoke(new MethodInvoker(GUIAccess));
}
}

void GUIAccess()
{
csProgress.Value = progress;
csProgress.Update();
}

Allerdings bleibt die Bar immer auf 0...
du solltest '[ CODE]' tags verwenden.
mit dem debugger kannst du dein problem selbst lösen.

zum problem:
ich gehe mal davon as das der code in einem extra thread läuft?, wenn nicht musst du das ändern.
(i / count * 100) ist immer 0 da i < count ist, ist i / count immer 0 da bei integer division der rest abgeschnitten wird.
Schreib statdessen (i / (double)count * 100) auserdem ist es bei solchen termen besser sie mt klammern eindeutig zu machen also: ((i / (double)count) * 100)
01/17/2013 18:57 __©oⱤly™#3
Oh stimmt!

Hatte es am Anfang mit double...
Hab das dann umgeändert!

Das wegen den CODE Tags^^ Sorry aber ich hab zum ersten mal was hier gepostet.

Vielen Dank :)

Es geht jetzt ein wenig...

Ich hab das Gefühl, das sich die Progressbar jetzt einfach random füllt...

Habs geschafft!

Thread closed.