1

我无法理解这段代码:

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”是什么意思。

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

4

2 回答 2

3

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

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

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

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

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

于 2013-10-11T04:09:33.080 回答
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)
于 2013-10-11T04:13:49.590 回答