2016-12-14 34 views
0

我的Windows窗体应用程序有一个注销按钮,单击时会提示MsgBox弹出询问用户是否确定他想记录是否退出。我是新来的Visual Basic,所以我不知道我应该放在Elseif语句中,以便当用户单击MsgBox上的“否”时,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 

在此先感谢。

回答

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

相关问题