WPF C#SaveFileDialog - 如果文件名存在于备用文件夹中,则重新打开对话框

时间:2015-05-27 19:58:20

标签: wpf savefiledialog

我有一个WPF项目,我有一个自动保存的“备份”文件夹。如果用户在保存项目时选择其他名称,我首先检查备份文件夹,并警告它们是否已有具有该名称的项目。如果是这样,我想重新打开SaveFileDialog并允许它们重命名。

SaveFileDialog dlg = new SaveFileDialog();
dlg.DefaultExt = ".xml";
dlg.Filter = "xml documents (.xml)|*.xml|All Files (*.*)|*.*";
dlg.FileName = ProjectName;
bool? result = dlg.ShowDialog();

if (result == true)
{
    string changedFilename = System.IO.Path.GetFileNameWithoutExtension(dlg.FileName);
    if (changedFilename != CurrentProjectName)
    {
        if (ExistingProjectNames.Contains(changedFilename))
        {
            if (MessageBox.Show("Project name " + changedFilename + " already exists. Continue?", "Existing Project Name", MessageBoxButton.OKCancel, MessageBoxImage.Warning) == MessageBoxResult.OK)
            {
                CurrentProjectName = changedFilename;
                WriteFile(dlg.FileName);
            }

            else
            {
            //go back to beginning and open dialog again so user can rename
            }

看起来很简单,但我想不出最好的方法。我已经考虑过递归和切换语句,但似乎我让它太复杂了。是否有更“标准”的方法来做到这一点?

1 个答案:

答案 0 :(得分:1)

您可以做的一件事是在显示对话框之前注册FileOk事件。当用户按下对话框中的“保存”按钮时,将调用事件处理程序,您可以选择设置e.Cancel = true以阻止对话框关闭,并允许用户进行其他选择。

另一种选择是在while循环中显示对话框,直到满足任何条件,使其继续重新打开,直到用户做他们需要做的事情。