2016-03-27 6 views
2

私は学校のプロジェクトに取り組んでいますが、この最後のバグは解りません。最初のif文がfalseを返したときにsaveFileDialogをオープンすることになっています。しかし、elseステートメントを続ける代わりに、例外をスローするようにまっすぐに進み、saveFileダイアログを開かないようにします。それは私に次のエラーを与える:Code: The path is not of a legal form.C#Try/CatchがネストされたIf/Elseステートメントをスキップし、SaveDialogを開こうとしません

私は問題を理解していません。ユーザーは、ポップアップする保存ダイアログのパスを選択できる必要があります。ファイルはまだ存在せず、ファイルを保存するためにファイルの保存ダイアログを開くはずです。ロブの提案パー

private void btnSave_Click(object sender, EventArgs e) 
    { 
     // Declare StreamWriter object 
     StreamWriter outputFile; 

     // Try to write file 
     try 
     { 
      // If current file is > 0 
      if (new FileInfo(currentFile).Length > 0) 
      { 
       // Create output file using current file 
       outputFile = File.CreateText(currentFile); 

       // Loop through current file and write lines to output file 
       for (int i = 0; i < lstBoxLog.Items.Count; i++) 
       { 
        outputFile.WriteLine(lstBoxLog.Items[i].ToString()); 
       } 

       // Close text file 
       outputFile.Close(); 
      } 

      // Else open save dialog for user to save file 
      else 
      { 
       // If save file dialog is equal to dialog result 
       if (saveFile.ShowDialog() == DialogResult.OK) 
       { 
        // Open output file object with create text 
        outputFile = File.CreateText(saveFile.FileName); 

        // Set currentFile to = savefile dialog 
        currentFile = saveFile.FileName; 

        // Loop through each line and write to file 
        for (int i = 0; i < lstBoxLog.Items.Count; i++) 
        { 
         outputFile.WriteLine(lstBoxLog.Items[i].ToString()); 
        } 

        // Close text file 
        outputFile.Close(); 
       } 

       // Else show error message 
       else 
       { 
        // Display message box dialog 
        MessageBox.Show("Cannot save file.", "Not Saved"); 
       } 
      } 
     } 

     // Display error message. 
     catch (Exception ex) 
     { 
      // Display message box dialog 
      MessageBox.Show("Save canceled. \n\nCode: " + ex.Message, "Save Error!"); 
     } 
    } 
+0

は、「currentFile」は存在しない可能性があります。例外メッセージは何ですか? –

+0

'currentFile'のような音が無効なパスを含んでいます。その価値は何ですか? – juharr

+0

私はブレークポイントでそれを実行しました。そしてcurrentFileは値 ""を持っています。 例外メッセージは 'Save Cancelled 'です。コード:パスは正当な形式ではありません。 ' –

答えて

2
try 
{ 
    if (File.Exists(currentFile)) 
    { 
    if (new FileInfo(currentFile).Length > 0) 
    { 
     ... 
    } 
    } 
    else 
    { 
    //show save file dialog 
    } 

} 
catch 
{ 
    ... 
} 
0

これは私が使用したものです。

try 
            { 
                // If current file is > 0 
                if (currentFile.Length > 0) 
                { 
                   // Create output file using current file 
                   outputFile = File.CreateText(currentFile); 
関連する問題