我有一个应用程序,我在所有材料的末尾生成报告,点击生成报告按钮。报告以Excel格式生成。问题是每当我创建一个报告时,我都可以在同一个位置创建另一个具有相同名称的报告。它基本上覆盖了第一份报告。
我想向用户提供一个框,说明您可以生成具有相同名称或名称已存在的报告,并选择其他名称。
感谢您的帮助!
答案 0 :(得分:2)
在保存文件之前,您应该知道将要保存的文件名是什么。如果是,那么只测试文件是否已存在。如果是,则提示用户输入新名称并将其保存为新名称,例如
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
}
答案 1 :(得分:1)
在保存文件之前,检查具有此名称的文件是否已存在,如果存在,则提供重命名文件。像这样:
if(File.Exists(proposedFileName)){
showDialog("file exists, please choose other name");
}
答案 2 :(得分:1)
我总是按照DarkXphenomenon的建议做的,我在表单的文件名中添加了一个温和的时间戳:
<filename>_YYMMDD_HHMMSS.ext
虽然这并不适用于所有情况,但它有很多优点:
简单,有效
它使我不必编写各种回转来与用户就名称,覆盖,重命名,取消等来回来回。通常深入代码从来没有打算让用户接口
它使自动化变得更加容易。
它使测试更容易。
它可以更轻松地诊断用户问题:毫无疑问,文件的创建时间或创建顺序。
答案 3 :(得分:-1)
在创建报告之前,您可以遍历现有文件并检查名称是否已存在并提供正确的错误消息。
string newFileName = "new file";
string[] fileNames = Directory.GetFiles("path");
foreach (string file in fileNames)
{
if (file == newFileName)
{
MessageBox.Show("Error");
break;
}
}