none
MsgBoxStyle.YesNoCancel gibt auch bei Klick auf "Nein" vbcancel zurück. RRS feed

  • Frage

  • Hallo!

    Ich habe ein Problem mit meinen Messageboxen.

    Der Style ist

    MsgBoxStyle.YesNoCancel

    und die Box hat auch 3 Schaltflächen: Ja, Nein, Abbrechen.

    Wenn man auf Abbrechen klickt ist der Rückgabewert vbcancel. Wenn man auf Nein klickt aber auch! Ich müsste aber doch vbno zurück bekommen.

    Weiß jemand woran das liegt?

    Viele Grüße

    Claudia

    Donnerstag, 29. August 2013 10:02

Antworten

  • Ja klar. Sorry!

    Ich habe die Messageboxen bisher wie in VB 6 behandelt.

    Z.B. So:

    If MsgBox("Möchten Sie Ihre Änderungen speichern?", vbYesNo, ModuleName)= vbyes then

    Das funktionierte solange bis ich zusätzlich eine Abbrechen-Schaltfläche anzeigen wollte und dafür vbYesNoCancel als Style verwendet habe. Dann wurde bei Klick auf Abbrechen und bei Klick auf Nein immer vbCancel zurück gegeben.

    Jetzt habe ich es so umgebaut und dann läuft es:

    Dim msg As String
    Dim title As String
    Dim style As MsgBoxStyle
    Dim response As MsgBoxResult
    msg = "Möchten Sie Ihre Änderungen speichern?"
    style = MsgBoxStyle.DefaultButton1 Or MsgBoxStyle.Question Or MsgBoxStyle.YesNoCancel
    title = ModuleNameresponse = MsgBox(msg, style, title)
    If response = MsgBoxResult.Yes Then
          KommandoSpeichern()
    End If

     
    Freitag, 30. August 2013 07:40

Alle Antworten

  • Schon erledigt. Habe es selbst gefunden....
    Donnerstag, 29. August 2013 10:09
  • Hallo Claudia8,
    schön das du die Lösung gefunden hast. Kannst du diese denn bitte auch hier posten, damit andere Besucher eventuell auch eine Lösung finden? Danke.

    <Code-13/>- Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.

    Donnerstag, 29. August 2013 12:38
    Moderator
  • Ja klar. Sorry!

    Ich habe die Messageboxen bisher wie in VB 6 behandelt.

    Z.B. So:

    If MsgBox("Möchten Sie Ihre Änderungen speichern?", vbYesNo, ModuleName)= vbyes then

    Das funktionierte solange bis ich zusätzlich eine Abbrechen-Schaltfläche anzeigen wollte und dafür vbYesNoCancel als Style verwendet habe. Dann wurde bei Klick auf Abbrechen und bei Klick auf Nein immer vbCancel zurück gegeben.

    Jetzt habe ich es so umgebaut und dann läuft es:

    Dim msg As String
    Dim title As String
    Dim style As MsgBoxStyle
    Dim response As MsgBoxResult
    msg = "Möchten Sie Ihre Änderungen speichern?"
    style = MsgBoxStyle.DefaultButton1 Or MsgBoxStyle.Question Or MsgBoxStyle.YesNoCancel
    title = ModuleNameresponse = MsgBox(msg, style, title)
    If response = MsgBoxResult.Yes Then
          KommandoSpeichern()
    End If

     
    Freitag, 30. August 2013 07:40
  • Hi Claudia,

    wäre auch einfacher gegangen:

    If MsgBox("Möchten Sie Ihre Änderungen speichern?", MsgBoxStyle.YesNoCancel Or MsgBoxStyle.SystemModal Or MsgBoxStyle.Exclamation) = 2 Then
    
    xxx
    
    End IF
    
    

    Die Zahl steht dabei für einen Rückgabewert den du Abfragen kannst siehe hier:

    http://msdn.microsoft.com/de-de/library/139z2azd%28v=vs.90%29.aspx --> Rückgabewert

    Viele Grüße

    Donnerstag, 5. September 2013 12:24
  • @ _S_D_: Das ist schön kurz (gut), aber leider auch unsauber (weniger gut). Claudia hingegen macht das schon richtig. Denn strenggenommen ist

    If MsgBox(...) = 2

    unsauber, und OPTION STRICT ON würde das auch ankreiden (Elmar vermutlich auch ;-), weil der Rückgabewert eben MsgBoxResult ist, und nicht Integer.

    Just my 0.02$ ...


    LG, Dennis.

    EDI Consultant/Developer

    Ich nutze meistens VB6 und VS2005 bis VS2012

    Bitte die Antworten sowie weitere hilfreiche Beiträge von Mitgliedern markieren. Vielen Dank.

    Donnerstag, 5. September 2013 12:40