4

我正在尝试创建一个MsgBox()同时具有MsgBoxStyle.Critical样式和MsgBoxStyle.RetryCancel按钮样式的样式。到目前为止,我尝试过的是:

Private Sub DoSomething()
    Dim Answer as MsgBoxResult
        Answer = MsgBox("Error", MsgBoxStyle.RetryCancel & MsgBoxStyle.Critical, _
        "Some sort of error.")
    If Answer = MsgBoxResult.Retry Then
        'REM: Try code again
    Elseif Answer = MsgBoxResult.Cancel Then
        Exit Sub
    End If
End Sub

这是按钮当前的样子:

应该是重试/取消

消息框上没有Critical图标。

我怎样才能做到这一点?

4

3 回答 3

10

按位“组合”称为Or.

MsgBoxStyle.RetryCancel Or MsgBoxStyle.Critical

MsgBoxStyle.RetryCancel & MsgBoxStyle.Critical计算结果为"5" + "16",计算结果为"516",计算结果为516,神奇地等于MsgBoxStyle.YesNo Or MsgBoxStyle.DefaultButton3并因此被解释为这样。

不要将字符串连接运算符&用于按位逻辑。

于 2012-07-18T09:10:11.787 回答
4

使用MessageBox而不是MsgBox. 尝试这个:

    Dim _result As DialogResult = MessageBox.Show("Do you want to retry", "Confirm Retry", MessageBoxButtons.RetryCancel, MessageBoxIcon.Error)
    If _result = Windows.Forms.DialogResult.Retry Then
        ' try again code
    Else

    End If

消息框示例

于 2012-07-18T09:11:45.860 回答
-1

使用 msgbox:代替 & 使用 + 符号,例如

MsgBoxStyle.RetryCancel + MsgBoxStyle.Critical

应该可以工作,你也可以尝试这个数字,所以 5 (RetryCancel) + 16 (Critical) = 21。例如

MsgBox("Error", 21, "Some sort of error.") should work.

msgboxStyle codes:
OKOnly  = 0
OKCancel = 1
AbortRetryIgnore = 2
YesNoCancel = 3
YesNo = 4
RetryCancel = 5
Critical = 16
Question = 32
Exclamation = 48
Information = 64
DefaultButton1 = 0
DefaultButton2 = 256
DefaultButton3 = 512
于 2016-09-12T12:22:16.320 回答