SaveFileDialog 上的自定义检查文件名
Posted
技术标签:
【中文标题】SaveFileDialog 上的自定义检查文件名【英文标题】:Custom checking file name on SaveFileDialog 【发布时间】:2014-09-21 04:49:32 【问题描述】:我有一个SaveFileDialog
。
当用户点击确定时,我必须检查是否有类似的文件名。
系统一直在做这样的测试,但是我需要添加一个测试是否有一个名称和编号相似的文件。
例如,如果用户选择了文件名“a”并且存在文件“a1”或“a2”,则应显示警告消息。 (当有一个名为“a”的文件时出现)。
有没有办法做到这一点?
【问题讨论】:
在这种情况下不要使用 SaveFileDialog。使用您自己创建的控件为此创建自定义逻辑。 a & a1 & a2 是否在同一路径中? @MehdiKhademloo,是的。 文件扩展名相同?只是约束是在文件名末尾添加数字? 它有一个简单的方法,请稍等一下...... 【参考方案1】:SaveFileDialog
继承 FileDialog
具有 FileOk
事件的类。您可以放置逻辑来检查类似文件是否已存在于此事件的处理程序方法中。如果结果为true
,则显示警告消息。然后如果用户从警告对话框中选择No
,将CancelEventArgs
参数的Cancel
属性设置为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
【讨论】:
【参考方案2】:这就是你想要的答案
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()
方法是保存说明...
【讨论】:
以上是关于SaveFileDialog 上的自定义检查文件名的主要内容,如果未能解决你的问题,请参考以下文章
Silverlight SaveFileDialog - 设置默认文件名
检查下载中的自定义文件夹中是不是存在文件 - 不推荐使用 getExternalStoragePublicDirectory