这段代码在Visual Basic中意味着什么?

时间:2013-10-11 04:03:34

标签: vb.net visual-studio-2010

我无法理解这段代码:

SaveFileDialog.InitialDirectory = "C:\"
SaveFileDialog.FileName = "dummy.txt"
SaveFileDialog.Filter = "txt files (*.txt)|*.txt"

If (SaveFileDialog.ShowDialog() = 2) Then
    MsgBox("No dummy has been created", MsgBoxStyle.OkOnly)
Else
    Dim StreamWriter As StreamWriter = File.CreateText(SaveFileDialog.FileName)

我想知道“2”在此代码的If语句开头是什么意思。

注意:我没有写这段代码。这是我老师给我们的一个例子。

2 个答案:

答案 0 :(得分:3)

当您调用SaveFileDialog.ShowDialog方法时,会返回DialogResultDialogResult是一个枚举,看起来像这样

public enum DialogResult
{
    None,    // 0
    OK,      // 1
    Cancel,  // 2 !!
    Abort,   // 3
    Retry,   
    Ignore,
    Yes,
    No,      // 7
}

在这种情况下,每个枚举值都有一个从零开始的隐式数字索引。在您的代码示例中,代码根据索引而不是实际的枚举值来评估DialogResult

这意味着评估DialogResult是否等于2等同于评估DialogResult是否等于DialogResult.Cancel

这意味着当用户按下对话框窗口上的 cancel 按钮时,应显示MessageBox,通知用户他们没有选择文件。

答案 1 :(得分:1)

2是ShowDialog调用的对话结果(枚举值)。

DialogResult映射到以下枚举:http://msdn.microsoft.com/en-us/library/system.windows.forms.dialogresult.aspx

所以,通过检查

If (SaveFileDialog.ShowDialog() = 2) Then
    MsgBox("No dummy has been created", MsgBoxStyle.OkOnly)

代码验证用户是否在对话框中选择了CANCEL。

代码也应该使用检查的枚举值来编写,这使得它更清晰:

If (SaveFileDialog.ShowDialog() = DialogResult.Cancel) Then
    MsgBox("No dummy has been created", MsgBoxStyle.OkOnly)