我有一个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
}
看起来很简单,但我想不出最好的方法。我已经考虑过递归和切换语句,但似乎我让它太复杂了。是否有更“标准”的方法来做到这一点?
答案 0 :(得分:1)
您可以做的一件事是在显示对话框之前注册FileOk
事件。当用户按下对话框中的“保存”按钮时,将调用事件处理程序,您可以选择设置e.Cancel = true
以阻止对话框关闭,并允许用户进行其他选择。
另一种选择是在while
循环中显示对话框,直到满足任何条件,使其继续重新打开,直到用户做他们需要做的事情。