Wie eine Progressbar laufen lassen in Visual 2008



  • Hallo,

    meine Frage ist es wie kann iche ProgressBar in Visual C# 2008 laufen lassen, so das sie auch schön langsam angezeigt wird. Denn die Methode "PerformStep" gibt es das irgendwie nicht mehr.



  • Doch, die gibt's noch.



  • und was muss ich machen damit ich diese methode sehe? denn wenn ich progressbar.PerformStep mache, kriege ich einen fehler

    C:\Dokumente und Einstellungen\kruc\Eigene Dateien\Visual Studio 2008\Projects\WPF_Testapplikation\WPF_Testapplikation\Window1.xaml.cs(36,26): error CS1061: 'System.Windows.Controls.ProgressBar' does not contain a definition for 'PerformStep' and no extension method 'PerformStep' accepting a first argument of type 'System.Windows.Controls.ProgressBar' could be found (are you missing a using directive or an assembly reference?)

    oder setze ich es einfach nur falsch ein?



  • Du hättest ruhig sagen können, dass Du mit WPF statt mit WinForms arbeitest. 😞

    In diesem Fall musst Du den Wert tatsächlich manuell ändern. 'SmallChange' und 'LargeChange' sind für die Schrittweite zuständig, wenn ich das richtig interpretiere.

    /EDIT: Blödsinn korrigiert.



  • ahh ok sorry das is das vergessen habe anzugeben, werde es mir fürs nächste mal merken.danke aber schonmal, ich werde es probieren.

    EDIT:Naja eigentlich ist Value für die veränderung zuständig. hier mein code bisher.

    progressBar1.Maximum = 100;
    
                for (int i = 0; i < progressBar1.Maximum+1; i++)
                {
    
                    progressBar1.Value = i;
    System.Threading.Thread.Sleep(100);
    
                }
    

    jedoch wenn ich das so mache dann ist die Bar sofort gefüllt. Wenn ich aber ein System.Threading.Thread.Sleep reinmache, dann führt er die schleife zwar trotzdem auf, wartet, füllt dann die Bar aber wieder vollständig



  • Willst Du einfach nur die Progressbar hochlaufen lassen? Dafür sind Animationen und Storyboards da, sowas macht man nicht mehr manuell.

    Das ist ganz einfach:

    var da = new DoubleAnimation(progressBar1.Minimum, progressBar1.Maximum, new Duration(TimeSpan.FromSeconds(2)));
    progressBar1.BeginAnimation(ProgressBar.ValueProperty, da);
    


  • kann es sein ,dass man dazu noch eine bestimmte using direktive braucht? weil bei mir regt er sich über das DoubleAnimation auf?

    EDIT: Ich habs, danke für die Hilfe



  • Firefighter schrieb:

    kann es sein ,dass man dazu noch eine bestimmte using direktive braucht? weil bei mir regt er sich über das DoubleAnimation auf?

    Sorry, da habe ich gekürzt. Das befindet sich im Namensbereich 'System.Windows.Media.Animation'.


Anmelden zum Antworten