IFELSE Statement

  • VB.NET

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

    IFELSE Statement

    Hi habe ein kleines Verständnisprobem und zwar will ich über buttons die bildsequenzändern sodass ich zb nach vorne laufe und von dem Punkt auch wieder zurück zum alten Punkt zurückkomme. Dies mache ich anhand von Fotostrecken.

    Habe es auch ganz gut hinbekommen doch habe ein verständnisProblem habe die beiden Bedingungen immer mit If.. then end if abgetrennt doch er springt dadurch nicht zurück bzw geht nicht in die zweite If bedingung rein. Und habe es mit ELSEIF ausgeführt siehe:

    VB.NET-Quellcode

    1. If PicBox_WC.ImageLocation = "C:\Users\Luigi\Dropbox\SIMU Projekt Fluchtwege\Grundriss FOTOSTRECKE\Fotostrecke Gesamt - Klein\7,0.jpg" = True Then
    2. PicBox_WC.ImageLocation = "C:\Users\Luigi\Dropbox\SIMU Projekt Fluchtwege\Grundriss FOTOSTRECKE\Fotostrecke Gesamt - Klein\7.jpg"
    3. ElseIf PicBox_WC.ImageLocation = "C:\Users\Luigi\Dropbox\SIMU Projekt Fluchtwege\Grundriss FOTOSTRECKE\Fotostrecke Gesamt - Klein\7.jpg" = True Then
    4. PicBox_WC.ImageLocation = "C:\Users\Luigi\Dropbox\SIMU Projekt Fluchtwege\Grundriss FOTOSTRECKE\Fotostrecke Gesamt - Klein\7,1.jpg"
    5. End If


    Was ist der Unterschied bzw warum geht das mit ELSEIF und nicht mit zwei IF bedingungen?
    Das '= True' am Ende war überflüssig, denn If (var="xy") liefert schon einen booleschen Wert zurück.


    Da es sich hier allerdings scheinbar um eine Mehrfach-Selektion handelt, solltest du ggf. Select Case benutzen.
    (Unter der Voraussetzung das ImageLocation eine String-Property/Variable ist)

    VB.NET-Quellcode

    1. Select Case PicBox_WC.ImageLocation
    2. Case "C:\Users\Luigi\Dropbox\SIMU Projekt Fluchtwege\Grundriss FOTOSTRECKE\Fotostrecke Gesamt - Klein\7,0.jpg"
    3. PicBox_WC.ImageLocation = "C:\Users\Luigi\Dropbox\SIMU Projekt Fluchtwege\Grundriss FOTOSTRECKE\Fotostrecke Gesamt - Klein\7.jpg"
    4. Case "C:\Users\Luigi\Dropbox\SIMU Projekt Fluchtwege\Grundriss FOTOSTRECKE\Fotostrecke Gesamt - Klein\7.jpg"
    5. PicBox_WC.ImageLocation = "C:\Users\Luigi\Dropbox\SIMU Projekt Fluchtwege\Grundriss FOTOSTRECKE\Fotostrecke Gesamt - Klein\7,1.jpg"
    6. End Select



    Ps: War gerade n bissl verpeilt und an deiner Frage vorbei, aber dazu solltest du 2 If-Abfragen hintereinander durchführen oder verschachteln/kombinieren.
    Polling is trolling!

    Achtung: Ich habe die komische Angewohnheit, simple Dinge zu verkomplizieren..

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Rootbob91“ ()

    Wenn du zwei If Verzweigungen hast, dann wird erstmal die erste Verzweigung geprüft, wenn der Fall der ersten Verzweigung zutrifft wird die ImageLocation Property so umgeändert, dass bei der Prüfung des zweiten Ausdruckes, der dannach folgt, ebenso True bei rauskommt, was dazu führt, dass

    VB.NET-Quellcode

    1. PicBox_WC.ImageLocation = "C:\Users\Luigi\Dropbox\SIMU Projekt Fluchtwege\Grundriss FOTOSTRECKE\Fotostrecke Gesamt - Klein\7,1.jpg"


    bei rauskommt.

    Wenn du das ganze jetzt in einem If Elseif Konstrukt hast, dann wird die erste Verzweigung geprüft, ist diese True, wird die zweite garnicht erst geprüft.
    Hmm ok danke ja bei mir ist das alles in einem Button Event, d.h wenn ich den Button1 drücke soll er das machen.
    Doch jetzt verstehe ich nicht, warum es bei mir mit dem ELSEIF klappt und mit zwei verschiedenen IF-Abfragen nicht. Hab nämlich auch so gedacht, dass er beide überprüft ist aber nicht der Fall.

    Habe ich was falsches verstanden?

    Edit by hal2000:
    - Vollzitat entfernt.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „hal2000“ ()

    Lies nochmal genau was RushDen geschrieben hat. Das ist nämlich exakt die Antwort auf deine Frage.
    Weltherrschaft erlangen: 1%
    Ist dein Problem erledigt? -> Dann markiere das Thema bitte entsprechend.
    Waren Beiträge dieser Diskussion dabei hilfreich? -> Dann klick dort jeweils auf den Hilfreich-Button.
    Danke.

    milito schrieb:

    Was ist der Unterschied

    So in etwa:

    VB.NET-Quellcode

    1. If i = 0 Then
    2. ' i ist 0
    3. ElseIf i = 1
    4. ' i ist nicht 0 und i ist 1
    5. Else
    6. ' Alles Andere
    7. End If

    VB.NET-Quellcode

    1. If i = 0 Then
    2. ' i ist 0
    3. Else
    4. ' Alles Andere
    5. End If
    6. If i = 1
    7. ' i ist 1
    8. Else
    9. ' Alles Andere
    10. End If

    If-Abfragen (Klick mich)
    Mit freundlichen Grüßen,
    Thunderbolt
    hmm sorry bin etwas verwirrt. also bei mir ist es folgendermaßen: Habe buttzons mit vor und zurück bei dem jeweils ein bild generiert wird.
    D.h. drücke ich auf vor zeigt geht er von bild 1 auf bild 1.1.
    Drücke ich auf zurück sollte dieser von bild 1.1 auf bild 1 zurückspringen.
    Habe das als zuerst mit zwei IF Abfragen realisiert:

    VB.NET-Quellcode

    1. If PicBox_WC.ImageLocation = "C:\Users\Luigi\Dropbox\SIMU Projekt Fluchtwege\Grundriss FOTOSTRECKE\Fotostrecke Gesamt - Klein\7,0.jpg" = True Then
    2. PicBox_WC.ImageLocation = "C:\Users\Luigi\Dropbox\SIMU Projekt Fluchtwege\Grundriss FOTOSTRECKE\Fotostrecke Gesamt - Klein\7.jpg"
    3. End IF
    4. IF PicBox_WC.ImageLocation = "C:\Users\Luigi\Dropbox\SIMU Projekt Fluchtwege\Grundriss FOTOSTRECKE\Fotostrecke Gesamt - Klein\7.jpg" = True Then
    5. PicBox_WC.ImageLocation = "C:\Users\Luigi\Dropbox\SIMU Projekt Fluchtwege\Grundriss FOTOSTRECKE\Fotostrecke Gesamt - Klein\7,1.jpg"
    6. End If


    Das ging aber nicht bei zurückschalten


    Dann habe ich es mit dem ELSEIF KOnstrukt realisiert und es geht.
    Nun verstehe ich leider immer noch nicht ganz warum die erste Lösung nicht geht :(

    Sorry für die Umstände wills aber verstehen.
    Für sowas ist dieses Konstrukt eher ungeeignet. Schau mal diesen Pseudocode an:

    VB.NET-Quellcode

    1. Dim page As Integer = 0
    2. Dim pages As String() = New String() { "C:\Users\Luigi\Dropbox\SIMU Projekt Fluchtwege\Grundriss FOTOSTRECKE\Fotostrecke Gesamt - Klein\7,0.jpg",
    3. "C:\Users\Luigi\Dropbox\SIMU Projekt Fluchtwege\Grundriss FOTOSTRECKE\Fotostrecke Gesamt - Klein\7.jpg",
    4. "C:\Users\Luigi\Dropbox\SIMU Projekt Fluchtwege\Grundriss FOTOSTRECKE\Fotostrecke Gesamt - Klein\7,1.jpg" }
    5. ButtonNext_Click:
    6. If page + 1 < pages.Length Then
    7. page += 1
    8. PicBox_WC.ImageLocation = pages(page)
    9. ButtonPrevious_Click:
    10. If page - 1 > 0 Then
    11. page -= 1
    12. PicBox_WC.ImageLocation = pages(page)
    Mit freundlichen Grüßen,
    Thunderbolt
    Danke dir :). Werde es so versuchen. Allerdings habe ich mehrere Bilder und naja es sind mehrere Kombis möglich :D

    Könnte es allerdings auch mit dem Case Konstrukt realisieren, wie schon vorgeschlagen wurde.

    Danke für die Hilfe

    Hmm habe es auch mit dem case versucht und genau das gleiche Problem:

    VB.NET-Quellcode

    1. Select Case PicBox_WC.ImageLocation
    2. 'Falls in Punkt 7,0 -> RightButton= Zu Punkt 7
    3. Case "C:\Users\Luigi\Dropbox\SIMU Projekt Fluchtwege\Grundriss FOTOSTRECKE\Fotostrecke Gesamt - Klein\7,0.jpg"
    4. PicBox_WC.ImageLocation = "C:\Users\Luigi\Dropbox\SIMU Projekt Fluchtwege\Grundriss FOTOSTRECKE\Fotostrecke Gesamt - Klein\7.jpg"
    5. 'Falls in Punkt 7 -> 7,1
    6. Case "C:\Users\Luigi\Dropbox\SIMU Projekt Fluchtwege\Grundriss FOTOSTRECKE\Fotostrecke Gesamt - Klein\7.jpg"
    7. PicBox_WC.ImageLocation = "C:\Users\Luigi\Dropbox\SIMU Projekt Fluchtwege\Grundriss FOTOSTRECKE\Fotostrecke Gesamt - Klein\7,1.jpg"
    8. End Select

    Er für das zweite case nicht aus, warum? :(

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „milito“ ()

    @milito:: Offensichtlich überblickst Du Deinen Code nicht mehr.
    1. Mach Dir ein Array von möglichen Pfaden, wie es @timmi31061: vorgeschlagen hat.
    2. Arbeite dann mit dem Index in diesem Array, nicht aber mit dem Getter von ImageLocation.
    3. Überlege, ob es besser wäre, die Bilder in Deine Ressourcen zu packen, dann kannst Du Dein Programm auch anderen Leuten geben.
    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!