0

I have an application where I generate Report at the end of all the materials, by Hitting generate Report button. The report is generated in Excel format. The problem is that whenever I create one report, I can create another report with the same name on the same location. It basically overrides the first report.

I want to give the user a box saying that you can generate a report with the same name or the name already exists and choose a different name.

Thanks for the help!

4

4 回答 4

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
}
于 2012-09-11T14:04:19.100 回答
1

我总是按照 DarkXphenomenon 的建议做,我在表单的文件名上附加了一个温和的时间戳:

<filename>_YYMMDD_HHMMSS.ext

虽然这并不适用于所有情况,但它有很多优点:

  1. 它很简单,而且很有效

  2. 它使我不必为与用户来回切换名称、覆盖、重命名、取消等而编写各种回转操作。通常深入到从未打算拥有用户界面的代码中。

  3. 它使自动化变得更加容易。

  4. 它使测试更容易。

  5. 它使诊断用户问题变得更容易:文件的创建时间或创建顺序毫无疑问。

于 2012-09-11T14:17:24.147 回答
1

在保存文件之前如何检查具有此名称的文件是否已经存在,如果存在,请提供重命名文件。像这样的东西:

if(File.Exists(proposedFileName)){
   showDialog("file exists, please choose other name");
}
于 2012-09-11T14:03:55.890 回答
-1

在创建报告之前,您可以遍历现有文件并检查名称是否已经存在并给出正确的错误消息。

            string newFileName = "new file";
            string[] fileNames = Directory.GetFiles("path");

            foreach (string file in fileNames)
            {
                if (file == newFileName)
                {
                    MessageBox.Show("Error");
                    break;
                }
            }
于 2012-09-11T14:04:38.553 回答