web-dev-qa-db-fra.com

MessageBox avec YesNoCancel - No & Cancel déclenche le même événement

J'ai une boîte de message avec les boutons YesNoCancel ...

  • Appuyez sur Yes pour effectuer une action et fermer l’application - fonctionne bien
  • Appuyer sur No ne fera rien et fermera l'application - (voir ci-dessous)
  • Appuyer sur Cancel ne fera rien et gardera l'application ouverte - (voir ci-dessous).

J'utilise DialogResult.No pour le No bouton et DialogResult.Cancel pour le Cancel bouton. Mais appuyer sur l'un d'eux déclenche DialogResult.Cancel un événement. Quel est le problème?

44
Bibhas Debnath

Cela devrait bien fonctionner:

Dim result As Integer = MessageBox.Show("message", "caption", MessageBoxButtons.YesNoCancel)
If result = DialogResult.Cancel Then
    MessageBox.Show("Cancel pressed")
ElseIf result = DialogResult.No Then
    MessageBox.Show("No pressed")
ElseIf result = DialogResult.Yes Then
    MessageBox.Show("Yes pressed")
End If
111
Darin Dimitrov

Je vois toutes les réponses sont correctes. Je veux juste écrire un petit morceau de code différent. À mon avis, vous pouvez le faire sans utiliser une variable supplémentaire pour enregistrer le résultat de la boîte de dialogue. Regarde:

Code VB

Select Case MsgBox("Your Message", MsgBoxStyle.YesNoCancel, "caption")
                    Case MsgBoxResult.Yes
                        MessageBox.Show("Yes button")
                    Case MsgBoxResult.Cancel
                        MessageBox.Show("Cancel button")
                    Case MsgBoxResult.No
                        MessageBox.Show("NO button")
 End Select

Code C #

switch (MessageBox.Show("Message", "caption", MessageBoxButtons.YesNoCancel))
        {
            case DialogResult.Yes: MessageBox.Show("Yes"); break;
            case DialogResult.No: MessageBox.Show("No"); break;
            case DialogResult.Cancel: MessageBox.Show("Cancel");  break;
        }
32
Orlando Herrera

Utilisation:

Dim n As String = MsgBox("Do you really want to exit?", MsgBoxStyle.YesNo, "Confirmation Dialog Box")
If n = vbYes Then
    MsgBox("Current Form is closed....")
    Me.Close() 'Current Form Closed
    Yogi_Cottex.Show() 'Form Name.show()
End If
3
Prashant Koli
dim result as dialogresult
result = MessageBox.Show("message", "caption", MessageBoxButtons.YesNoCancel)
If result = DialogResult.Cancel Then
    MessageBox.Show("Cancel pressed")
ElseIf result = DialogResult.No Then
    MessageBox.Show("No pressed")
ElseIf result = DialogResult.Yes Then
    MessageBox.Show("Yes pressed")
End If
3
yousafkamal

Alerte de fermeture de conformation:

Private Sub cmd_exit_click()

    ' By clicking on the button the MsgBox will appear
    If MsgBox("Are you sure want to exit now?", MsgBoxStyle.YesNo, "closing warning") = MsgBoxResult.Yes Then ' If you select yes in the MsgBox then it will close the window
               Me.Close() ' Close the window
    Else
        ' Will not close the application
    End If
End Sub
2
Suji

Juste pour ajouter un peu à l'exemple de Darin, ce qui suit montre une icône avec les cases. http://msdn.Microsoft.com/en-us/library/system.windows.forms.messagebox (v = vs.110) .aspx

Dim result = MessageBox.Show("Message To Display", "MessageBox Title", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question)

If result = DialogResult.Cancel Then

    MessageBox.Show("Cancel Button Pressed", "MessageBox Title",MessageBoxButtons.OK , MessageBoxIcon.Exclamation)

ElseIf result = DialogResult.No Then

    MessageBox.Show("No Button Pressed", "MessageBox Title", MessageBoxButtons.OK, MessageBoxIcon.Error)

ElseIf result = DialogResult.Yes Then

    MessageBox.Show("Yes Button Pressed", "MessageBox Title", MessageBoxButtons.OK, MessageBoxIcon.Information)

End If
2
David Kittell

J'utilise une invite oui/non comme suit:

If MsgBox("Are you sure?", MsgBoxStyle.YesNo) <> MsgBoxResults.Yes Then
    Exit Sub
End If
2
DLS Discovery

Voici comment vous pouvez le faire sans un Dim, en utilisant MessageBox.Show au lieu de MsgBox. C'est à mon avis la manière la plus propre de l'écrire!

Select Case MessageBox.Show("Message", "Title", MessageBoxButtons.YesNo)
    Case vbYes
        ' Other Code goes here
    Case vbNo
        ' Other Code goes here
End Select

Vous pouvez le raccourcir encore davantage en utilisant If:

If MessageBox.Show("Message", "Title", MessageBoxButtons.YesNo) = vbYes Then
    ' Other Code goes here
End If
1
Elias Wick