Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Affje

Treue Seele

  • »Affje« ist der Autor dieses Themas

Beiträge: 89

Beruf: Student

  • Private Nachricht senden

11

01.06.2011, 12:53

Und wenn du mal den Aufruf dieser Methode Shot() auskommentierst so wie in meinem Beispiel oben hast du diese Verzögerung auch? Ich vermute nämlich fast mal dass du in der Methode irgendwas machst das dein Programm entsprechend lange lahmlegt...
Habs eben auskommentiert, selbes Resultat. Ich habe woanders gelesen, dass das Problem nicht direkt an einem aufwendigen, komplizierten Programmablauf liegt, sondern daran, dass die Progressbar standardgemäß im Vista-Theme auf eine passende Animationsgeschwindigkeit wartet oder so irgendwas, bin mir da nicht mehr sicher.
Wenn ich z.b. Application.EnableVisualStyles() auskommentiere, klappts einwandfrei und ohne Verzögerung.
Deshalb ärgert mich das so seitens Microsoft, dass man so was elementares so unnötig kompliziert machen muss.
Wenn ich mir jetzt vorstelle, jede ProgressBar per backgroundworker flüssig zum Laufen zu bringen, na dann gut nacht :D

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

12

01.06.2011, 13:03

Hast du am Style des ProgressBar rumgeschraubt?

Affje

Treue Seele

  • »Affje« ist der Autor dieses Themas

Beiträge: 89

Beruf: Student

  • Private Nachricht senden

13

01.06.2011, 13:06

Hast du am Style des ProgressBar rumgeschraubt?

Nein, ganz normale standard-ProgressBar, nichts verändert.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

14

01.06.2011, 13:11

Also ich habs grad ausprobiert, bei mir funktioniert das ohne Probleme. Eine kleine "Verzögerung" kommt daher dass der ProgressBar im Windows 7 Style animiert ist.

Affje

Treue Seele

  • »Affje« ist der Autor dieses Themas

Beiträge: 89

Beruf: Student

  • Private Nachricht senden

15

01.06.2011, 13:14

Also ich habs grad ausprobiert, bei mir funktioniert das ohne Probleme. Eine kleine "Verzögerung" kommt daher dass der ProgressBar im Windows 7 Style animiert ist.

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
namespace Testwiese
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            progressBar1.Value++;
        }
    }
}


Neues Projekt, Button und progressBar reinziehen, obiger Code. Das hat bei mir dieselbe Verzögerung, die absolut nicht klein, sondern einfach nur nervig ist.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

16

01.06.2011, 13:21

Wie gesagt das liegt an der Animation die ein ProgressBar in Windows 7 nunmal hat. Inkrementier das Ding mal um einen großen Wert und schau dir an was passiert. Ich denke nicht dass sich das einfach ändern lässt. Vermutlich müsstest du deinen ProgressBar selber zeichnen.

Affje

Treue Seele

  • »Affje« ist der Autor dieses Themas

Beiträge: 89

Beruf: Student

  • Private Nachricht senden

17

01.06.2011, 13:27

Wie gesagt das liegt an der Animation die ein ProgressBar in Windows 7 nunmal hat. Inkrementier das Ding mal um einen großen Wert und schau dir an was passiert. Ich denke nicht dass sich das einfach ändern lässt. Vermutlich müsstest du deinen ProgressBar selber zeichnen.
Tatsächlich. Maximum 200, button-Klick += 100; und das ganze läuft. Ich bleib dabei, das ist meiner Meinung nach einfach schlecht implementiert, warum die Animation nicht einfach als Methode der progressBar ein- und ausschaltbar machen.
Ich werds dann wohl pfuschen und einfach die jeweiligen Werte * 10 machen, so klappts.
Danke nochmals.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

18

01.06.2011, 13:40

Ich bleib dabei, das ist meiner Meinung nach einfach schlecht implementiert, warum die Animation nicht einfach als Methode der progressBar ein- und ausschaltbar machen.

Das ist einfach wie ein ProgressBar in Windows 7 funktioniert. Es gibt offenbar einen Hack dass man ProgressBar.Value erst zu weit setzt und dann gleich drauf auf den richtigen Wert zurück. Da der ProgressBar beim Zurücklaufen keine Animation macht springt er dann direkt zum Wert.

Affje

Treue Seele

  • »Affje« ist der Autor dieses Themas

Beiträge: 89

Beruf: Student

  • Private Nachricht senden

19

01.06.2011, 13:46

Ich bleib dabei, das ist meiner Meinung nach einfach schlecht implementiert, warum die Animation nicht einfach als Methode der progressBar ein- und ausschaltbar machen.

Das ist einfach wie ein ProgressBar in Windows 7 funktioniert. Es gibt offenbar einen Hack dass man ProgressBar.Value erst zu weit setzt und dann gleich drauf auf den richtigen Wert zurück. Da der ProgressBar beim Zurücklaufen keine Animation macht springt er dann direkt zum Wert.
Muss ich mal testen :D
funktioniert tatsächlich,

Quellcode

1
2
progressBarShots.Value = progressBarShots.Maximum;
progressBarShots.Value = Shots;

Edit: leidiglich beim letzten Schritt gibts dann logischerweise einen Ruckler, da xyz.Maximum mit dem Shots übereinstimmt.

Werbeanzeige