MsgBox | Rückgabe eines falschen Inputs

  • VB.NET
  • .NET 4.5

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von FormFollowsFunction.

    MsgBox | Rückgabe eines falschen Inputs

    Hallo allerseits!
    Ich habe seit einiger Zeit folgendes Problem:
    Beim Schließen von MsgBoxen werfen diese nicht den Wert "vbAbort" zurück sondern irgend einen anderen gültigen Wert.

    VB.NET-Quellcode

    1. Dim dialog_ergebnis As MsgBoxResult
    2. dialog_ergebnis = MsgBox("Was kann der Fehler sein wenn ein MsgBox immer den falschen Input ausgibt?", MsgBoxStyle.OkOnly, Title:="Wieso?")
    3. If dialog_ergebnis = vbAbort Then
    4. 'Etwas Code
    5. Else
    6. 'Etwas Code
    7. End If


    Es wird sogar im Ereignisprotokoll der Diagnosesitzung falsch angezeigt -> falscher_input.zip

    Hat jemand mit solchen komischen Situationen Erfahrungen?
    Ich bin jedenfalls am Verzweifeln ?(

    Vielen Dank für jede Hilfe
    Hallo, kommt darauf an auf welchen Button du klickst beim Schließen. vbAbort bedeutet wenn der Anwender den Abbrechen butten klickt. Wenn er sie mit der OK Schaltfläche schließt wird der code von vbAbort nicht aufgerufen. Mehr dazu findest du hier https://msdn.microsoft.com/de-de/library/system.windows.forms.dialogresult(v=vs.110).aspx

    Nachtrag, sehe gerade das du nur eine Ok schaltfläche hast, was bedeutet das kein vbAbort gecallt werden kann.
    Former Raider of the WoW guild's Memento Morri (Orginal guild on eu-frostmane Classic - Cata) TG Gaming (mop - bfa) and macht DRUCK
    Naja schau dir mal das Beispiel auf der Seite dir ich dir gepostet habe an. Du musst nur bei der If abfrage ein Else einfügen, dort kannst du dann dein Code einfügen, wenn die Msgbox einfach nur geschlossen wurde. Also in etwa so

    VB.NET-Quellcode

    1. Private Sub ValidateUserEntry5()
    2. ' Checks the value of the text.
    3. If ServerName.Text.Length = 0 Then
    4. ' Initializes variables to pass to the MessageBox.Show method.
    5. Dim Message As String = "You did not enter a server name. Cancel this operation?"
    6. Dim Caption As String = "No Server Name Specified"
    7. Dim Buttons As Integer = MessageBoxButtons.YesNo
    8. Dim Result As DialogResult
    9. 'Displays a MessageBox using the Question icon and specifying the No button as the default.
    10. Result = MessageBox.Show(Me, Message, Caption, MessageBoxButtons.YesNo)
    11. ' Gets the result of the MessageBox display.
    12. If Result = System.Windows.Forms.DialogResult.Yes Then
    13. ' Code wenn auf ok geklickt wurde
    14. Else
    15. ' Code wenn die Box einfach geschlossen wird
    16. End If
    17. End If
    18. End Sub


    edit: msdn.microsoft.com/de-de/libra…boxbuttons(v=vs.110).aspx könnte Interessant sein für dich
    Former Raider of the WoW guild's Memento Morri (Orginal guild on eu-frostmane Classic - Cata) TG Gaming (mop - bfa) and macht DRUCK
    Verwende anstatt MsgBox besser MessageBox.Show.

    Wenn du nur einen OK-Button hast, prüfst du, ob OK gedrückt wurde. Ansonsten wurde der Dialog einfach geschlossen.

    VB.NET-Quellcode

    1. If MessageBox.Show("Click OK to feel ok.", "This caption is ok", MessageBoxButtons.OK) = DialogResult.OK Then
    2. 'OK geklickt...
    3. Else
    4. 'einfach geschlossen...
    5. End If
    Gruß Murdoc
    Achtung. Bei ner .Net-MessageBox ist das Ergebnis beim Schließen-[X] oben rechts am Fenster abhängig davon, welche Buttons angezeigt werden.
    Bei einem OkOnly bedeutet das Schließen über [X] DialogResult.OK! Bei einer YesNoCancel-Auswahl ist es DialogResult.Cancel. Bei YesNo ist [X] nict verfügbar.

    ##########

    btw: DialogResult.Yes ist nicht gleich DialogResult.OK. Wenn man auf nen MessageBox.OK-Button klickt, bekommt man DialogResult.OK (Wert = 1) zurück. Bei nem MessageBox.Yes-Button hingegen DialogResult.Yes (Wert = 6).
    Bilder
    • MessageBoxResult.png

      2,71 kB, 272×55, 106 mal angesehen
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.

    Marv schrieb:

    und der SONST-Wert bedeuted dann: geclosed
    Wenn Du die Button MBB_YesNoCancel vorgibst, bekommst Du 3 Button angezeigt. Da musst Du schon mit Select Case oder If () - Else If () Else arbeiten.
    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).
    VB-Fragen über PN / Konversation werden ignoriert!