2016-12-14 33 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代碼。

相關問題