PictureBox: Zwischen 2 Bildern wechseln bei Mausklick

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    PictureBox: Zwischen 2 Bildern wechseln bei Mausklick

    Hallo.

    Ich habe erst seit kurzem angefangen mit Visual Basic zu programmieren und bin daher noch nicht so mit der Materie vertraut. Daher ist das wahrscheinlich auch ein ziemlich einfaches Problem, leider konnte mir Dr. Google nicht weiterholfen.

    Folgendes Problem:
    Ich nutze für eine Multimedia-Anwendung eine Picture Box als Play/Pause Button. Dieser soll bei jedem Mausklick zwischen 2 Bildern wechseln.

    Ich wollte es so versuchen:

    Quellcode

    1. Private Sub PictureBox3_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox3.Click
    2. Radio.URL = "http://www.ndr.de/resources/metadaten/audio/m3u/ndr2_nds.m3u"
    3. If PictureBox3.Image Is My.Resources.play Then
    4. PictureBox3.Image = My.Resources.stop
    5. End If
    6. If PictureBox3.Image Is My.Resources.stop Then
    7. PictureBox3.Image = My.Resources.play
    8. End If
    9. End Sub


    Hat leider nicht funkitioniert. Hat da jemand ne Idee? ?(


    Vielen Dank schonmal,

    LG,
    Maddi.
    @Maddi Willkommen im Forum. :thumbup:
    Warum so kompliziert?

    VB.NET-Quellcode

    1. Dim FlagImage As Boolean = False
    2. Private Sub PictureBox3_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox3.Click
    3. 'Radio.URL = "http://www.ndr.de/resources/metadaten/audio/m3u/ndr2_nds.m3u" ' das gehört nicht hier her.
    4. If FlagImage Then
    5. PictureBox3.Image = My.Resources.stop
    6. Else
    7. PictureBox3.Image = My.Resources.play
    8. End If
    9. FlagImage = Not FlagImage
    10. End Sub

    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!
    Naja, deine Picturebox kann nur zwei Zustände haben in deinem Programm, das eine Bild oder das andere. Also musst du nicht den Zustand der PictureBox abfragen, sondern kannst eben einfach eine andere Variable nehmen die zwei Zustände annehmen kann. Und je nach deren Zustand wechselst du das Bild.

    Und kurz zur Erklärung, warum Dein Code aus Post#1 nicht macht, was Du erhofftest:

    VB.NET-Quellcode

    1. If PictureBox3.Image Is My.Resources.play Then
    2. PictureBox3.Image = My.Resources.stop '=> PicBox3.Image wird ggf. zu [Stop]
    3. End If
    4. If PictureBox3.Image Is My.Resources.stop Then 'durch o.g. Code ist das PicBox3.Image jetzt [Stop] ...
    5. PictureBox3.Image = My.Resources.play 'und hier wird es zu [Play]
    6. End If

    => Wenn das Bild [Play] zeigt, wird es in Codezeile#2 zu [Stop], nur um dann in Zeile#5 wieder zu [Play] zu werden.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    @Maddi Was @VaporiZed zum Ausdruck bringen will:
    Wenn Du aus den Zeilen 3 und 4

    VB.NET-Quellcode

    1. ElseIf PictureBox3.Image Is My.Resources.stop Then
    machst (wie in Post #2) könnte es gehen, weil mit dem Is-Operator werden Instanzen verglichen werden, nicht aber Werte.
    Die Lösung mit der Boolean-Variable ist dem in jedem Falle vorzuziehen.
    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!