Visual Basic Diashow programmieren Hilfe!

... komplette Frage anzeigen

4 Antworten

Guten Morgen,

Roggs machte schon eine gute Antwort, doch hab ich nochmal eine andere Methode.

Du könntest eine nicht sichtbares Label erstellen, wo eine Zahl ansteigt pro tick. Dann könntest Du, über ein Textchanged Event, sagen bei der Zahl soll die picturebox angezeigt oder ausgeblendet werden.

So kann man auch gut unterschiedliche Timer Zeiten erreichen indem man den Timer erst stoppt und bei einigen Zahlen den Zeit Intervall ändert. Am Ende des label changed Events sagen wenn es nicht die letzte Zahl war soll er den timer starten.

Bei weiteren Fragen, kannst du hier kommentieren oder mir auch gerne eine Freundschafts Anfrage senden, so dass du Nachrichten schreiben kannst. Ich versuche dann so schnell wie möglich zu antworten.

Mit freundlichen Grüßen DARKDacil.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Toraka
04.12.2013, 18:00

Das verstehe ich ja nun überhaupt nicht. Warum sollte ein nicht sichtbares Label integriert werden? Nur, um darin einen Zähler hoch zu setzen? Wozu gibt wes Variablen, z.B. der hier sinnvolle Integer? Im Grunde wird gar kein Timer benötigt. Es gibt die Möglichkeit, einen BackgroudWorker anzulegen, also nichts weiter als ein eigenständiger Thread. In diesem läuft eine while(true)-Dauerschleife, die aufgrund des BackgroundWorkers die Anwendung nicht blockiert. Es wird das Bild gewechselt u d anschliessend erfolgt ein simples Sysstem.Threading.Thread.Sleep(10000), also eine Pause von 10 Sekunden. Innerhalb der While kann und sollte zusätzlich eine modulare Variable abgefragt werden, die angibt, ob die Schleife verlassen werden soll. Es reicht eine Boolsche, die bei true ein break ausführt. Das war's schon.

0
Kommentar von 31chl33r
09.12.2013, 19:57

ich hab einfach eine Variable genommen die dann einfach hoch zählt dann brauch man kein label

0

Stell den Timer bei Tick auf 1000 das ist eine Sekunde wenn du 10 Sekunden willst stell ihn auf 10000 der timer aktiviert dann immer ein neues Bild nach 10 sekudnen wenn du das möchtest.

Ich hoffe ich konnte dir helfen !

DeinRoggs

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von 31chl33r
09.12.2013, 19:50

ohja danke das hat mir geholfen :)

0

Ich würde die Zeitsteuerung des Bildwechsels wie folgt realisieren.

Const MILSEC_PICCHANGE As Integer = 10000 'Defaultwert

WithEvents m_backgroundWorker As System.ComponentModel.BackgroundWorker
Dim m_stopPicChange As Boolean
Dim m_milsecPicChange As Integer = -1

Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    'Übernahme Defaultwert, insofern nicht anderweitig gesetzt
    If m_milsecPicChange < 0 Then
        m_milsecPicChange = MILSEC_PICCHANGE
    End If

    m_backgroundWorker = New System.ComponentModel.BackgroundWorker()
    m_backgroundWorker.WorkerSupportsCancellation = True
    m_backgroundWorker.RunWorkerAsync()
End Sub

Private Sub m_backgroundWorker_DoWork(sender As System.Object, e As System.ComponentModel.DoWorkEventArgs) Handles m_backgroundWorker.DoWork
    ChangePic()
End Sub

Private Sub ChangePic()
    Try
        While (True)
            If m_stopPicChange Then
                m_backgroundWorker.CancelAsync()
                Exit While
            End If

            'Bildwechsel
            '...
            Beep() 'zum Testen

            'Pausieren
            System.Threading.Thread.Sleep(10000)
        End While
    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try
End Sub
Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von 31chl33r
09.12.2013, 19:49

oh das ist bestimmt richtig, aber das was da steht, versteh ich nicht bin noch totaler anfänger.

0

Und? Wie hast du es gelöst? Gib doch bitte mal ein kurzes Feedback! Das wäre denen gegenüber fair, die dir eine Antwort geschrieben haben und nun nicht wissen, in wie weit dir deren Rat geholfen hat. Ich gehöre übrigens auch dazu! ;-)

Antwort bewerten Vielen Dank für Deine Bewertung

Was möchtest Du wissen?