自定义检查SaveFileDialog上的文件名

时间:2014-09-21 04:49:32

标签: c# file savefiledialog

我有SaveFileDialog

当用户点击OK时,我必须检查是否有类似的文件名。

系统一直在做这样的测试,但是我需要添加一个测试是否有一个类似名称和编号的文件。

例如,如果用户选择了文件名“a”并且文件“a1”或“a2”,则应显示警告消息。 (当有一个名为“a”的文件时出现)。

有办法做到这一点吗?

2 个答案:

答案 0 :(得分:2)

SaveFileDialog继承了FileDialog类,其中包含FileOk个事件。您可以使用逻辑来检查此事件的处理程序方法中是否已存在类似文件。如果结果为true,则显示警告消息。然后,如果用户从警告对话框中选择No,请将Cancel参数的CancelEventArgs属性设置为True,这将阻止关闭保存文件对话框窗口:

var dlg = new SaveFileDialog();
dlg.FileOk += (o, args) =>
              {
                  var file = dlg.FileName;
                  if (isSimilarFileExist(file))
                  {
                      var result = MessageBox.Show("Similar file names exist in the same folder. Do you want to continue?", 
                                                    "Some dialog title", 
                                                    MessageBoxButtons.YesNo, 
                                                    MessageBoxIcon.Warning
                                                  );
                      if(result == DialogResult.No)
                        args.Cancel = true;
                  }
              };
dlg.ShowDialog();

......

private bool isSimilarFileExist(string file)
{
    //put your logic here
}

答案 1 :(得分:0)

这是你想要的答案

SaveFileDialog S = new SaveFileDialog();
if(S.ShowDialog() == DialogResult.OK)
{
    bool ShowWarning = false;
    string DirPath = System.IO.Path.GetDirectoryName(S.FileName);
    string[] Files = System.IO.Directory.GetFiles(DirPath);
    string NOFWE = DirPath+"\\"+System.IO.Path.GetFileNameWithoutExtension(S.FileName);
    foreach (var item in Files)
    {

        if (item.Length > NOFWE.Length && item.Substring(0, NOFWE.Length) == NOFWE)
        {
            int n;
            string Extension = System.IO.Path.GetExtension(item);
            string RemainString = item.Substring(NOFWE.Length, item.Length - Extension.Length - NOFWE.Length);
            bool isNumeric = int.TryParse(RemainString, out n);
            if(isNumeric)
            {
                ShowWarning = true;
                break;
            }

        }
    }
    if(ShowWarning)
    {
        if (MessageBox.Show("Warning alert!", "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
            Save();//Saving instance
    }
    else
    {
        Save();//Saving instance
    }
}

ans Save()方法是保存说明...