【问题标题】:What does this piece of code mean in Visual Basic?这段代码在 Visual Basic 中是什么意思?
【发布时间】:2013-10-11 04:03:34
【问题描述】:

我无法理解这段代码:

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)

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

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

【问题讨论】:

  • @ByteBlast =] 谢谢提醒

标签: vb.net visual-studio-2010


【解决方案1】:

当您调用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

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

【讨论】:

    【解决方案2】:

    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)
    

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

    代码也应该使用枚举值来写检查,这样更清楚:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-28
      • 1970-01-01
      相关资源
      最近更新 更多