我有一个带有 YesNoCancel
按钮的消息框...
- 点击
Yes
会执行某些操作并关闭应用程序 - 正常工作 - 点击
No
什么都不会发生并关闭应用程序 - (见下文) - 点击
Cancel
什么都不会发生并保持应用程序打开 - (见下文)。
我在 No 按钮上使用 DialogResult.No
,在 Cancel 按钮上使用 DialogResult.Cancel
。但点击它们中的任何一个都会触发 DialogResult.Cancel
事件。问题出在哪里?
我有一个带有 YesNoCancel
按钮的消息框...
Yes
会执行某些操作并关闭应用程序 - 正常工作No
什么都不会发生并关闭应用程序 - (见下文)Cancel
什么都不会发生并保持应用程序打开 - (见下文)。我在 No 按钮上使用 DialogResult.No
,在 Cancel 按钮上使用 DialogResult.Cancel
。但点击它们中的任何一个都会触发 DialogResult.Cancel
事件。问题出在哪里?
这应该可以正常工作:
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
我看到所有答案都是正确的。我只想写一小段不同的代码。在我看来,您可以这样做而不使用额外的变量来保存对话框框的结果。看一下:
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
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;
}
补充一下Darin的例子,下面的代码将显示一个带有方框图标的消息框。 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
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
使用:
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
以下是不使用Dim
,而使用MessageBox.Show
代替MsgBox
的方法。在我看来,这是最为简洁明了的写法!
Select Case MessageBox.Show("Message", "Title", MessageBoxButtons.YesNo)
Case vbYes
' Other Code goes here
Case vbNo
' Other Code goes here
End Select
If
进一步缩短它:If MessageBox.Show("Message", "Title", MessageBoxButtons.YesNo) = vbYes Then
' Other Code goes here
End If
If MsgBox("Are you sure?", MsgBoxStyle.YesNo) <> MsgBoxResults.Yes Then
Exit Sub
End If
关闭确认警告:
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
更新奥兰多和彼得的答案。
Select Case MsgBox("Your Message", VbMsgBoxStyle.vbYesNoCancel, "caption")
Case VbMsgBoxResult.vbYes
MsgBox "Yes button"
Case VbMsgBoxResult.vbCancel
MsgBox "Cancel button"
Case VbMsgBoxResult.vbNo
MsgBox "No button"
End Select
试试这个
MsgBox("Are you sure want to Exit", MsgBoxStyle.YesNo, "")
If True Then
End
End If