Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
        /// <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);
        }
Beispiel #3
0
        /// <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);
        }
Beispiel #4
0
 /// <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();