【问题标题】:Program won't return to the Form when user clicks "No" on MsgBox当用户在 MsgBox 上单击“否”时,程序不会返回表单
【发布时间】:2016-12-14 15:03:58
【问题描述】:

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

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

提前致谢。

【问题讨论】:

    标签: vb.net visual-studio


    【解决方案1】:

    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 代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-17
      • 2013-05-02
      相关资源
      最近更新 更多