[レポートの生成]ボタンを押すことで、すべての資料の最後にレポートを生成するアプリケーションがあります。レポートはExcel形式で生成されます。問題は、1つのレポートを作成するたびに、同じ場所に同じ名前の別のレポートを作成できることです。基本的に最初のレポートを上書きします。
同じ名前でレポートを生成できる、またはその名前がすでに存在し、別の名前を選択できることを示すボックスをユーザーに提供したいと思います。
助けてくれてありがとう!
ファイルを保存する直前に、保存するファイル名を知っておく必要があります。その場合は、ファイルがすでに存在するかどうかをテストします。その場合は、ユーザーに新しい名前の入力を求め、新しい名前として保存します。例:
string filename = @"C:\File.txt";
if(File.Exists(filename)){
// Prompt for new one.
// save the report to the new name instead.
}else
{
// save to filename
}
ファイルを保存する前に、この名前のファイルがすでに存在するかどうかを確認し、存在する場合は、ファイルの名前を変更することを提案してください。このようなもの:
if(File.Exists(proposedFileName)){
showDialog("file exists, please choose other name");
}
私は常にDarkXphenomenonが提案したことを行い、フォームのファイル名に穏やかなタイムスタンプを追加します。
<filename>_YYMMDD_HHMMSS.ext
これはすべての状況に対応できるわけではありませんが、多くの利点があります。
そのシンプルで、それは動作します
これにより、名前をめぐってユーザーと行ったり来たり、上書き、名前変更、キャンセルなどを行うために、あらゆる種類の回転を記述する必要がなくなります。通常、ユーザーインターフェイスを持つことを意図していなかったコードの奥深くにあります。
自動化がはるかに簡単になります。
テストが簡単になります。
これにより、ユーザーの問題の診断が容易になります。ファイルがいつ作成されたか、またはどのような順序で作成されたかについては疑問の余地がありません。
レポートを作成する前に、既存のファイルを繰り返し処理し、名前がすでに存在するかどうかを確認して、適切なエラーメッセージを表示できます。
string newFileName = "new file";
string[] fileNames = Directory.GetFiles("path");
foreach (string file in fileNames)
{
if (file == newFileName)
{
MessageBox.Show("Error");
break;
}
}