/// <summary> /// 合并过滤器,获取最终的过滤器,例如: /// 表格文件(*.xls;*.xlsx)|*.xls;*.xlsx|所有文件(*.*)|*.* /// </summary> /// <param name="extFilters"></param> /// <returns></returns> private static FileExtFilter Combine(this List <FileExtFilter> extFilters) { if (extFilters.IsEmpty()) { return(null); } var result = new FileExtFilter(); var sbFilter = new StringBuilder(); foreach (var extFilter in extFilters) { if (null == extFilter) { continue; } if (!result.DefaultExt.IsValid()) { result.DefaultExt = extFilter.DefaultExt; } if (sbFilter.Length > 0) { sbFilter.Append("|"); } sbFilter.Append(extFilter.Filter); } result.Filter = sbFilter.ToString(); return(result); }
/// <summary> /// 选择保存路径 /// </summary> /// <param name="extFilter"></param> /// <param name="fileName">要保存的文件名称</param> /// <param name="title">窗口标题</param> /// <param name="initialDirectory">初始化目录路径</param> /// <returns></returns> private static string SelectSavePath(this FileExtFilter extFilter, string fileName, string title = "选择文件", string initialDirectory = null) { var sfd = new SaveFileDialog { Filter = extFilter?.Filter, Title = title, FileName = fileName, InitialDirectory = initialDirectory.GetValue(Environment.GetFolderPath(Environment.SpecialFolder.Desktop)), RestoreDirectory = true, AddExtension = true, //CheckFileExists = true, //CheckPathExists = true, }; if (sfd.ShowDialog() != DialogResult.OK) { return(string.Empty); } if (!Path.HasExtension(sfd.FileName) && extFilter != null && extFilter.DefaultExt.IsValid()) { return($"{sfd.FileName}.{extFilter.DefaultExt.LowerCase()}"); } return(sfd.FileName); }
/// <summary> /// 批量选择文件 /// </summary> /// <param name="extFilter"></param> /// <param name="multiSelect">是否多选</param> /// <param name="title">窗口标题</param> /// <param name="initialDirectory">初始化目录路径</param> /// <returns></returns> private static List <string> SelectFiles(this FileExtFilter extFilter, bool multiSelect, string title = "选择文件", string initialDirectory = null) { if (null == extFilter || !extFilter.Filter.IsValid()) { return(null); } var ofd = new OpenFileDialog { Filter = extFilter.Filter, Title = title, InitialDirectory = initialDirectory.GetValue(Environment.GetFolderPath(Environment.SpecialFolder.Desktop)), RestoreDirectory = true, AddExtension = true, Multiselect = multiSelect, CheckFileExists = true, CheckPathExists = true, }; if (ofd.ShowDialog() != DialogResult.OK) { return(null); } var fileNames = new List <string>(); if (ofd.FileNames.IsEmpty()) { fileNames.Add(ofd.FileName); } else { fileNames.AddRange(ofd.FileNames); } return(fileNames); }
/// <summary> /// 选择文件 /// </summary> /// <param name="extFilter"></param> /// <param name="title">窗口标题</param> /// <param name="initialDirectory">初始化目录路径</param> /// <returns></returns> private static string SelectFile(this FileExtFilter extFilter, string title = "选择文件", string initialDirectory = null) => extFilter.SelectFiles(false, title, initialDirectory)?.FirstOrDefault();