1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

ProgressBar + Timer

Discussion in 'Programmieren' started by Ufgu Fugullu, Sep 21, 2008.

Thread Status:
Not open for further replies.
  1. hallo zusammen,
    ich habe zwar gegooglet aber für mein problem keine lösung gefunden.....ich versuch grad ein programm mit VB2008 zu schreiben das den pc nach der eingabe der zeit (in eine Textbox) durch einen timer herunterfährt......funktioniert auch alles ganz gut, nun wollte ich aber eine progressbar einfügen damit ich seh wielange ich ungefähr noch zeit habe.....hier jetzt mein code:

    Code:
        Private Sub cmdEinschlafen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdEinschlafen.Click
            Timer1.Interval = txtZeit.Text
            Timer1.Enabled = True
        End Sub
    
        Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
            Call Shell("C:\Windows\system32\shutdown.exe -s -t01", 1)
        End Sub
    
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Timer1.Enabled = False
        End Sub
    
     
  2. Fettbemme

    Fettbemme Halbes Megabyte

    Hallo Ufgu

    Nun meine Vb Zeiten sind lange her, ich hoffe aber ich kann trotz dem helfen :)

    Du setzt in Deinem Timer den Vert für die Zeit, die gewartet werden soll, z.B. 5s, undnach dieser Zeit wird "Timer1_Tick" aufgerufen und das System heruntergefahren über den aufruf der "Shutdown.exe".

    Wenn Du sehen willst wie lange noch Zeit ist über eine Progress Bar, dann könntest Du z.B. die Zeit von Deinem Timer nicht auf 5s setzen, sondern nur auf 0.5s, da würde dann Deine "Timer1_Tick" Funktion 10x aufgerufen bevor 5s erreicht sind, und Du fährst dann nach dem 10ten aufruf das System runter. Bei jedem Aufruf würdest Du Deine Progressbar aktualisieren.
     
  3. da_Ferdi

    da_Ferdi Halbes Megabyte

    Dann wollen wir mal :):
    Weise der Intervall- Property des Timers den Wert 1000 (entspricht einer Sekunde) zu.

    Zur Laufzeit weist du der Maximum- Eigenschaft der ProgressBar die Anzahl der Sekunden bis zum Herunterfahren zu:
    ProgressBar.Maximum = Integer.Parse(TextBoxZeit.Text)

    Bei jedem 'Tick' des Timers erhöhst du den Wert (Value- Property) der ProgressBar um 1.
    ProgressBar.Value += 1

    Des Weiteren überprüfst du, ob die Value- Property so groß ist, wie die Maximum- Eigenschaft, und wenn dem so ist, dann stoppst du den Timer und führst die Logik zum Herunterfahren aus:
    If ProgressBar.Value = ProgressBar.Maximum Then
    Timer.Stop()
    'PC Herunterfahren
    End If
     
    Last edited: Sep 21, 2008
  4. danke für eure antworten.....hört sich auch gut an aber ich krich es irgendwie nicht umgesetzt.....kann mir einer von euch den fertigen code geben von meinem beispiel oben?? oder sagen wo die befehle hinkommen??....weil die Progressbar mach iwie gar nichts egal wie ich das hatte....
     
  5. da_Ferdi

    da_Ferdi Halbes Megabyte

    Ich habe dir mal ein Demo- Projekt geschrieben:
     

    Attached Files:

  6. danke schön, is super geworden bin gestern ziemlich lang dran hängen geblieben aber hab ne umständliche vllt auch bisschen ungenaue lösung gefunden

    Code:
        Dim PPP As Double
        Private Sub cmdEinschlafen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdEinschlafen.Click
            If txtZeit.Text = "" Or IsNumeric(txtZeit.Text) = False Then
                MessageBox.Show("Trage Zahlen ein!")
                txtZeit.Text = ""
            Else
                Timer1.Enabled = True
            End If
        End Sub
    
        Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
            If ProgressBar1.Value = ProgressBar1.Maximum Or ProgressBar1.Value > ProgressBar1.Maximum - PPP Then
                Call Shell("C:\Windows\system32\shutdown.exe -s -t 01", 1)
            Else
                PPP = 1000 / txtZeit.Text
                ProgressBar1.Value = ProgressBar1.Value + PPP
            End If
        End Sub
    
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            ProgressBar1.Maximum = 1000
            ProgressBar1.Value = 0
        End Sub
    
     
  7. soo nun läuft alles recht gut, aber eine frage muss ich noch stellen und zwar gib ich die zeit jetzt durch drei textboxen in stunden, minuten oder sekunden an......meine zeit wird nachher in "n Sekunden verbleibend" angezeigt.....jetzt ein freund mich auf die idee gebracht, das man evtl die ablaufende zeit in "1h 1min 1sek verbleibend" anzeigen kann??
     
  8. Fettbemme

    Fettbemme Halbes Megabyte

    Hallo Ufgu

    Ich bin mir jetzt nicht sicher was Du möchtest, ich habe es so verstanden, dass Du einen Wert in Sekunden hast und Du möchtest es aufschlüsseln in Stunden / Minuten / Sekunden.

    Nun das ist recht einfach:

    Wert der in hh:mm:ss umgewandelt werden soll ist in "SekundenZeit"

    Hinweis meine Divisionen sind "Ganzzahldivisionen", sprich 5/2=2 nicht 2.5
    Alle Variablen sind Ganzzahlvariablen

    Stunden=SekundenZeit/3600
    Minuten=(SekundenZeit-Stunden*3600)/60
    Sekunden=SekundenZeit-Stunden*3600-Minuten*60
     
Thread Status:
Not open for further replies.

Share This Page