当用户点击"否"时,程序将不会返回到表单。在MsgBox上

时间:2016-12-14 15:03:58

标签: vb.net visual-studio

我的Windows窗体应用程序有一个注销按钮,当单击该按钮时,会提示MsgBox弹出询问用户是否确定要注销。我是Visual Basic的新手,所以我不确定我应该在Elseif语句中添加什么,以便当用户点击" No"在MsgBox上,MsgBox将消失,Form将再次显示。这是我的代码:

Private Sub cmd_logout_Click(sender As Object, e As EventArgs) Handles cmd_logout.Click
    MsgBox("Are you sure you want to log-out?", MsgBoxStyle.YesNo)
    If MsgBoxResult.Yes Then
        Me.Close()
    ElseIf MsgBoxResult.No Then
        (I'm not sure what I should put here I'm having a hard time figuring it out)
    End If
End Sub

提前致谢。

1 个答案:

答案 0 :(得分:3)

MsgBox是一个函数,它返回MsgBoxResult枚举值。

您将其用作过程,丢弃返回值,然后使用常量表达式测​​试条件。

不妨这样做:

If 6 Then

ElseIf 7 Then

End If

MsgBoxResult.YesMsgBoxResult.No枚举值代表的任何内容。显然这没有多大意义。

解决方案是将函数的返回值捕获到变量中:

Dim result As MsgBoxResult = MsgBox("blablabla", MsgBoxStyle.YesNo)

然后针对常量测试该结果:

If result = MsgBoxResult.Yes Then

尽管如此,MsgBox是传统的做事方式,包括在Microsoft.VisualBasic中,以便于从VB6 / VBA过渡。

惯用的.NET方式是使用MessageBox.Show代替。

此外,在模块顶部指定Option Strict On(或更好:在项目级别),让编译器警告您未声明的变量和隐式类型转换,从而产生更加可靠和.NET惯用(更少) VB6-ish)VB代码。