我无法理解这段代码:
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语句开头是什么意思。
注意:我没有写这段代码。这是我老师给我们的一个例子。
答案 0 :(得分:3)
当您调用SaveFileDialog.ShowDialog
方法时,会返回DialogResult
。 DialogResult
是一个枚举,看起来像这样
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)