C# Progressbars Code+Bild+Fragen

lxlox

Cadet 4th Year
Registriert
Nov. 2013
Beiträge
74
Das Programm funktioniert folgendermaßen. Um so höher der Wert ist,
um so langsamer ladet die Prozessbar.

Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            int z;
            z = Convert.ToInt32(richTextBox1.Text);
            timer1.Interval = z;
            timer1.Start();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            timer1.Stop();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {

           

                if (progressBar1.Value < 100)
                {
                    progressBar1.Value += 1;
                }



                if (progressBar1.Value >= 100)
                {
                    progressBar1.Value = 0;
                }

         

        }
    }
}


Fragen:
(1)Was bedeutet timer1.Interval = z; Den wenn Intervall Abstand bedeutet und diese Zeile weggelassen wird funktioniert der code ganz anders.
(2) Wieso wird der nachfolgende Code zweimal aufgelistet mit unterschiedlichen Werten und nicht nur einmal.

Code:
if (progressBar1.Value < 100)
                {
                    progressBar1.Value += 1;
                }



                if (progressBar1.Value >= 100)

                {
                    progressBar1.Value = 0;
                }

(3) Wieso wird die Prozessbar nicht bis zum schluss dargestellt?
(4)Wie bekomme ich eine Prozentanzeige in der Prozessbar darstellen?
(5)Wieso funktioniert die try/catch funktion bei fehlerhaften eingaben
nicht? Welche Lösung hierfür gibt es.

prozessbar.jpg
 
Ich habe zwar mit c# noch nichts gemacht aber für mich sieht das so aus:

1.
timer.intervall bestimmt das interval in dem irgendwas ausgeführt wird.
z=5 also 5ms, demnach müsste der ladebalken sich alle 5ms bewegen

2.
Das könnte man nach meinem Verständnis auch zusammenfassen für sowas gibts normalerweise if then else, wie da die genaue syntax für c# ist kann ich nicht sagen

3.
du kannst ja mal die werte anpassen, z.B statt <100 mal <200 eintragen und schauen ob sich der balken weiter füllt,
da wird ja irgendwo ein maximalwert definiert sein.

4. für die prozentanzeige würde ich einfach den wert von progressBar1.Value unter dem ladebalken ausgeben.

5. try/catch connte ich in dem code nich finden.

Wie gesagt ich habe keine ahnung von c#

Falls ich da irgendwas falsches geschrieben habe bitte ich um ne kurze anmerkung.
 
Zuletzt bearbeitet: (fehler korrigiert)
st0rax schrieb:
Falls ich da irgendwas falsches geschrieben habe bitte ich um ne kurze anmerkung.
Das Intervall wird nicht in Sekunden oder Minuten angegeben.
 
Bzgl. (3):

Die Animation der progressBar ist ein bisschen langsam, deshalb kann es vorkommen das bei sehr kleinen Intervallen der Balken intern schon weiter ist als die Animation.
Sprich, intern (progressBar.Value) ist er schon bei 99 aber die Animation ist gerade erst bei 70.
Eine Leerung des Balkens geschied natürlich sofort (intern = 0).

Bzgl Prozentanzeige, erstelle doch ein Label und füge bei der methode "timer_tick":

Code:
label1.Text = progressBar1.Value.ToString() + "%";

ein.
 
Zuletzt bearbeitet:
Er will damit sagen, dass das Intervall in Millisekunden angegeben wird.
 
Zu den allen Fragen eine Antwort.

Bevor man sich mit der GUI Programmierung auseinandersetzten möchte, sollte man die Grundstukturen der Forms sich genauer ansehen. Aber als aller erstens vielleicht auch die asynchrone Programmierung. Und vielleicht noch davor die Datentypen kennenlernen (nicht die primitiven).

Ich meine nicht böse. Es ist nur so:
Wenn du gar keine Ahnung von Datentypen hast und wie man damit umgeht, dann bist du noch nicht bereit mit GUI zu arbeiten.
Wenn du gar keine Ahnung von Threading hast, solltest du das auch zuerst lernen.

Alles andere kommt automatisch!
 
Ich denke asynchrone Programmierung ist noch zu früh für seinen Wissensstand. Es reich erst mal zu verstehen, was der Timer macht und nicht unbedingt wie er es macht.
 
Zurück
Oben