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メソッドを呼び出すと、 aDialogResultが返されます。は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)

コードは、ユーザーがダイアログでキャンセルを選択したかどうかを検証しています。

コードは、チェックの列挙値を使用して記述する必要もあります。これにより、より明確になります。

If (SaveFileDialog.ShowDialog() = DialogResult.Cancel) Then
    MsgBox("No dummy has been created", MsgBoxStyle.OkOnly)
于 2013-10-11T04:13:49.590 に答える