MessageBox with YesNoCancel - No & Cancel triggers same event

前端 未结 9 1091
误落风尘
误落风尘 2020-12-04 21:23

I have a message box with the YesNoCancel buttons...

  • Pressing Yes will do some action and close the application - works fine
相关标签:
9条回答
  • 2020-12-04 21:43

    This is how you can do it without a Dim, using MessageBox.Show instead of MsgBox. This is in my opinion the cleanest way of writing it!

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

    You can shorten it down even further by using If:

    If MessageBox.Show("Message", "Title", MessageBoxButtons.YesNo) = vbYes Then
        ' Other Code goes here
    End If
    
    0 讨论(0)
  • 2020-12-04 21:49

    I see all the answers are correct. I just want to write a little different piece of code. In my opinion, you may do it without using an extra variable to save the result of the dialogBox. Take a look:

    VB Code

    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
    

    C# Code

    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;
            }
    
    0 讨论(0)
  • 2020-12-04 21:49
    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
    
    0 讨论(0)
  • 2020-12-04 21:51

    This should work fine:

    Dim result As DialogResult = 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
    
    0 讨论(0)
  • 2020-12-04 21:51

    Closing conformation alert:

    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
    
    0 讨论(0)
  • 2020-12-04 21:52

    Just to add a bit to Darin's example, the below will show an icon with the boxes. 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
    
    0 讨论(0)
提交回复
热议问题