PictureBox nach Zeit - Timer - automatisch wechseln

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von Drahuverar.

    PictureBox nach Zeit - Timer - automatisch wechseln

    @ all,

    ich möchte gerne, dass sich insgesamt 6 PictureBoxen in einem Intervall nacheinander zeigen, der Intervall z.B.: auf 20000 bei dem Timer. Mit zwei PictureBoxen klappt das auch ganz gut - siehe Code.
    Wie kann ich erstens erreichen, das alle PictureBoxen nacheinander durchlaufen - und wenn Sie durchgelaufen sind wieder von vorne anfangen. Den Timer_Picture habe ich in FormLoad eingesetzt -Timer_Picture.Start().
    Dann hier der Code - bei 20000 wechselt erauch das Bild, jedoch nicht bei ElseIf Me.Timer_Picture.Interval > 40000 Then... Muss ich für jedes Bild einen Timer einsetzen? Oder sollte ich besser mit Ressourcen arbeiten, nur dort hätte ich das gleiche Problem - der Timer muss ran.

    Für einen kleinen Ansatz wäre ich dankbar.

    Hier der Code

    Quellcode

    1. Private Sub Timer_Picture_Tick(sender As Object, e As EventArgs) Handles Timer_Picture.Tick
    2. If Me.Timer_Picture.Interval = 20000 Then
    3. Me.PictureBox1.Visible = False
    4. Me.PictureBox46.Visible = True
    5. ElseIf Me.Timer_Picture.Interval > 40000 Then
    6. Me.PictureBox1.Visible = False
    7. Me.PictureBox46.Visible = False
    8. Me.PictureBox47.Visible = True
    9. End If
    10. End Sub


    Mütze :)
    "Das Jahresende ist kein Ende und kein Anfang, sondern ein Weiterleben mit der Weisheit, die uns die Erfahrung gelehrt hat".
    "Das Fortrücken in der Kalenderjahrzahl macht wohl den Menschen, aber nicht die Menschheit reifer". :)
    "Wer bin ich, wenn ich bin, was ich habe und dann verliere was ich habe ?"
    Wie man VisualStudio nutzt? => Visual Studio richtig nutzen
    Timer.Interval ist meines Wissens nach nicht die verstrichene Zeit, sondern der Intervall in dem der Timer das Tic Event auslöst.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen

    diverse PictureBoxen anzeigen

    mr.moo
    Timer.Interval ist meines Wissens nach nicht die verstrichene Zeit, sondern der Intervall in dem der Timer das Tic Event auslöst.


    Was mich aber wundert, ist folgendes, mit den ersten beiden Bildern klappt es. Nur mit den vier anderen nicht. Im FormLoad habe ich den Timer starten lassen, im Tick Ereignis die Zeit zum Wechsel des Bildes angegeben (20000). Im Timer selber habe ich den sicher auf True gestellt und den Intervall auf 20000. Irgendetwas beisst sich hier enorm. Leider hat meine Suche hier im Forum und Mami Google nichts weiter ergeben, auch bei Microsoft auch nichts. Aber man lernt ja nie aus. Bislang hatte ich es immer nur mit einem Timer zu tun um ein Ereignis aus zu lösen und keinen Timer welcher alle 20 Sekunden das Bild der Box ändert.

    Aber ich denke auch, dass die Idee von "Erfinder des Rades auch nicht so schlecht ist, eine Box und dort die Bilder in ca. 1 Minute wechseln zu lassen - nur dazu benötige ich auch einen Timer oder StopWatch. Irgendwie sitze ich am Schreibtisch und weiss nicht weiter.
    Der "Kracher" wäre noch, wenn die Bilder eingeblendet würden. Hatte hier auch schon einen Tread gefunden. Aber erstmal selber versuchen...

    Evtl. eleganter wäre, du hättest nur eine Picbox, und der weist du sukzessive die 6 verschiedenen ImagLocations zu.


    Das werde ich morgen mal ausprobieren. Zwar ist ein Timer nicht hundertprozentig genau, aber hier spielt es keine Rolle. Im Übrigen habe ich Deinen Rat befolgt - und mal Basic richtig eingestellt. Tolles Tut.

    Danke Euch beiden für die Ratschläge und einen angenehmen Sonntag Abend - ich werde gleich mal ein Bierchen "Zischen"

    Vielen Dank - Mütze :)
    "Das Jahresende ist kein Ende und kein Anfang, sondern ein Weiterleben mit der Weisheit, die uns die Erfahrung gelehrt hat".
    "Das Fortrücken in der Kalenderjahrzahl macht wohl den Menschen, aber nicht die Menschheit reifer". :)
    "Wer bin ich, wenn ich bin, was ich habe und dann verliere was ich habe ?"
    Wie man VisualStudio nutzt? => Visual Studio richtig nutzen
    Wenn du den Timer Interval auf 20000 stellst wird dein ElseIf nie True sein. Der Interval ändert sich ja nicht.

    Ich schlage mal was vor:
    - Packe die Bilder (Image oder Pfad) in eine List(Of T)
    - Setze eine "globale" Integer Variable namens index
    - Im Tic Event das Bild in der List(Of T) mit der Index Variablen ansprechen und der PictureBox zuweisen und dann die Variable um eins erhöhen. Wenn die Variable den max Index erreicht, setze diese auf 0
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    @ mrMoo

    Vielen Dank für Deinen Tip, ich werde diesen beherzigen und ausführen. Ich habe den Intervall auf 1000 - 1 Sekunde - im Timer gesetzt. Also, im Moment wenn die Form lädt fängt er an zu zählen. Nur im Tick Event komme ich nicht auf den Code um zu sagen - Wenn Du 20000 erreicht hast, wechsel das Bild. Intellisense "spuckt" auch nichts raus. <X

    Naja, auch hier werde ich - wir - das Problem lösen. Mir geht es nicht um einfachere Methoden wie von Erfinder oder Dir, sondern einfach nur darum, dem Timer zu sagen, er soll das und das machen. Ich fühle mich wie ein blutiger Anfänger... trotz meines Studiums.

    Ich habe für unsere Firmen ein komplettes Kassenbuch - 9 Bücher - mit Quittung etc. geschrieben - allerdings Speicherung uber Settings., einen Kurzbrief - auch per Mail zu versenden - doch es kann nicht daran hapern, das ich einen Timer nicht in der oben erwähnten Form realisieren kann.
    Aber alle hier haben gelernt und Ihre Software umgeschrieben und verbessert - nur so geht es und ich muss sagen das VB Paradise eine Plattform ist, bei der ich noch viel lernen kann und MUSS.

    Einen angenehmen Sonntag Abend und danke für die Tips.

    Mütze
    "Das Jahresende ist kein Ende und kein Anfang, sondern ein Weiterleben mit der Weisheit, die uns die Erfahrung gelehrt hat".
    "Das Fortrücken in der Kalenderjahrzahl macht wohl den Menschen, aber nicht die Menschheit reifer". :)
    "Wer bin ich, wenn ich bin, was ich habe und dann verliere was ich habe ?"
    Wie man VisualStudio nutzt? => Visual Studio richtig nutzen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Mütze“ ()

    @Mütze Mach Dir ein Array mit den Images. Im Timer-Tick-Event zählst Du einfach einen Index hoch und zeigst das Bild dieses Index' an. Wenn Index >= Anzahl, dann Index = 0.
    Da die Images in einem Array liegen, musst Du sie lediglich der PictureBox-Property zuweisen, nix weiter.
    Feddich.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Mütze schrieb:

    Wenn Du 20000 erreicht hast, wechsel das Bild.


    Du hast hier nen Denkfehler. Der Timer erreicht keinen Intervall von 20000. Der Timer tickt alle 20.000 Millisekunden das ist der Intervall. Also, alle 20.000 Millisekunden wird der Code im Tic Event ausgeführt.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Hey @Mütze,
    wie @mrMo schon erwähnt hast du da einen Denkfehler, denn dein Timer tickt ja alle 20 Sekunden. Dein Intervall entscheidet also, was zwischen den Vorgängen passiert. Du kannst dir da super mit einem Zähler helfen und diesen einfach, sobald die 20 Sekunden erreicht sind, auf 0 setzen um von vorne anzufangen.

    Hier mal eine kleine Solution zum veranschaulichen.

    Je nachdem was genau du mit den Bildern erreichen möchtest (und je nachdem woher du dir diese ziehst) würde ich auf den Vorschlag von @RodFromGermany eingehen.

    Gruß,
    Drahuverar
    Dateien
    Option Strict On!