MessageBox mit Ja/Nein Befehlen

  • VB.NET

Es gibt 16 Antworten in diesem Thema. Der letzte Beitrag () ist von jvbsl.

    MessageBox mit Ja/Nein Befehlen

    Hay

    Nein ich weiß wie man die Buttons hinzufügt aber ich wollt wissen, wie ich die Buttons belegen kann?

    Bei Ja soll das Programm beenden und bei Nein soll das Programm nicht beenden.
    Aber wie anstellen?

    Gruß
    Hi mit Select Case

    Quellcode

    1. Select Case MessageBox.Show("Überschrieft", "Fensterinhalt", MessageBoxButtons.YesNo)
    2. Case Windows.Forms.DialogResult.Yes
    3. 'code für Ja
    4. Case Windows.Forms.DialogResult.No
    5. 'Code für Nein
    6. End Select


    gruss Aentfs

    Aentfs schrieb:

    Select Case MessageBox.Show("Überschrieft", "Fensterinhalt", MessageBoxButtons.YesNo)
    Case Windows.Forms.DialogResult.Yes
    'code für Ja
    Case Windows.Forms.DialogResult.No
    'Code für Nein
    End Select

    Nur ist es genau umgekehrt ;)

    VB.NET-Quellcode

    1. Select Case MessageBox.Show("Inhalt", "Überschrift", MessageBoxButtons.YesNo)
    2. Case Windows.Forms.DialogResult.Yes
    3. 'code für Ja
    4. Case Windows.Forms.DialogResult.No
    5. 'Code für Nein
    6. End Select


    Du hast "Fensterinhalt" und "Überschrift" vertauscht..


    Grüsse
    Pascal
    Da hätte ich eher zu den Grundlgen gepackt ...
    Also hier mal möglicher weise musst du noch was verändern ...

    VB.NET-Quellcode

    1. If MessageBox.Show("[Text]", "[Titel]", MessageBoxButtons.YesNo) = MsgBoxResult.Ok Then
    2. 'code
    3. ElseIf MessageBox.Show("[Text]", "[Titel]", MessageBoxButtons.YesNo) = MsgBoxResult.No Then
    4. 'code
    5. End If

    edit:
    sry war away und jetzt schon lösung gepostet worden ...
    mfg
    Im konkreten Fall ist If angebracht, weil beim Abbruch von "Programm beenden?" im Normalfall auch keine Aktion erfolgen soll. Und Select Case wenn man nur einen Fall abfragt? Sinnfrei.

    Außerdem hab ich einen gepflegteren Bart als Du, das besser riechende Deo und keine Schreibfehler in meinem Codebeispiel :P
    Zeit für Feierabend...

    Gruß FatFire
    @TG22997: bei deinem Programm wird wenn bei der MessageBox nicht Ok gedrückt wird eine zweite MessageBox aufgerufen...

    Select Case ist hierbei elleganter sobald du mehr als 2 Optionen hast, davor find ich es wesentlich unnötig ;)
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    erstmal ja habe in der Eile Überschrieft und Inhalt vertauscht und

    Zweitens mit Select Case kannst du theoretisch 100.000 antworten abfragen da Select Case nicht auf ja nein sondern auf einen Vergleich aus ist

    bedeutet im Klartext IF-Anfrage gleich JA oder NEIN und Select Case kann viel mehr als nur JA oder Nein.
    funzt doch mein code musste dann so aussehen:

    VB.NET-Quellcode

    1. Select Case MessageBox.Show("Möchten Sie das Programm wirklich beenden?", "Beenden", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
    2. Case Windows.Forms.DialogResult.Yes
    3. Me.Close()
    4. Case Windows.Forms.DialogResult.No
    5. 'Do Nothing
    6. End Select

    VB.NET-Quellcode

    1. Case Windows.Forms.DialogResult.No
    2. 'Do Nothing

    Das kannste rausschmeissen, ist unnötig.

    Und an den Select Case-Fan: Select Case ist nichts anderes als geschachteltes IF-ELSEIF. Unter der Oberfläche gibt es keinen Unterschied. Und deswegen kann es auch nicht mehr. Eher weniger. Denke dabei mal an AndAlso und OrElse.

    Gruß FatFire

    PS: Okay, ich korrigiere. Bei vielen Einträgen und Durchläufen ist SELECT CASE etwas schneller. Aber halt unflexibler. Und in obigem Beispiel macht es keinen Unterschied.

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

    Ich weiß nicht wie weit unter der Oberfläche du Select Case und IF vergleichst. Aber in CIL ist es definitiv anders aufgebaut. Und auch klar schneller von der Logik.

    Allerdings weiß ich nicht was der JIT-Kompiler dann aus dem CIL Befehl switch macht und wie das intern umgesetzt ist.
    Aber ich glaube in Assembler gibts für Switch Case sog. Branch Tables. Dies kann wohl performanter sein als jeden Wert per compare mit einem anderen zu vergleichen.

    Allerdings bin ich kein Assembler-Spezialist.

    Und wieso soll Select Case weniger flexibel sein ??
    Das ist meine Signatur und sie wird wunderbar sein!
    Und wieso soll Select Case weniger flexibel sein ??

    Weil Du nicht logisch verknüpfen kannst. Bei Select Case musst Du immer einen Eingangswert vergleichen. Natürlich könntest Du auch Select Case-Verschachteln, aber das führt das ganze dann ja irgendwie ad absurdum.

    Das mit der besseren Performance hab ich ja oben schon ergänzt, da lag ich ein wenig daneben. Bei Einzelvergleichen bringt das allerdings auch keinen Unterschied.

    Gruß FatFire
    Nunja , du kannst schon Logisch verknüpfen..

    VB.NET-Quellcode

    1. Select Case True
    2. Case a=b andalso b=c
    3. 'tu was
    4. Case a=c andalso b<> c
    5. 'tu was
    6. 'usw..
    7. End Select


    Ob das nun aber wirklich elegant ist, sei mal dahin gestellt :D

    Gruß Mono
    Das ist meine Signatur und sie wird wunderbar sein!
    ja das geht :P
    aber es bringt nichts, wenn du nur zwei optionen hast und dann auf True prüfst und mit Else einfach etwas anderes machst, oder ob du das in einem Select Case machst^^
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---