using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace WinformGeneralDeveloperFrame.Commons { /// ///打开、保存文件对话框操作辅助类 /// public class FileDialogHelper { public static string AllFilter = "All File(*.*)|*.*"; public static string WordFilter = "Word(*.doc)|*.doc|All File(*.*)|*.*"; public static string ExcelFilter = "Excel(*.xls)|*.xls|All File(*.*)|*.*"; public static string PdfFilter = "PDF(*.pdf)|*.pdf|All File(*.*)|*.*"; public static string ImageFilter = "Image Files(*.BMP;*.bmp;*.JPG;*.jpg;*.GIF;*.gif;*.png;*.PNG)|(*.BMP;*.bmp;*.JPG;*.jpg;*.GIF;*.gif;*.png;*.PNG)|All File(*.*)|*.*"; public static string HtmlFilter = "HTML files (*.html;*.htm)|*.html;*.htm|All files (*.*)|*.*"; public static string AccessFilter = "Access(*.mdb)|*.mdb|All File(*.*)|*.*"; public static string ZipFillter = "Zip(*.zip)|*.zip|Rar(*.rar)|*.rar|All files (*.*)|*.*"; public const string ConfigFilter = "配置文件(*.cfg)|*.cfg|All File(*.*)|*.*"; public static string TxtFilter = "(*.txt)|*.txt|All files (*.*)|*.*"; public static string XmlFilter = "XML文件(*.xml)|*.xml|All files (*.*)|*.*"; public static string RarFilter = "Rar(*.rar)|*.rar|All files (*.*)|*.*"; public static string SqliteFilter = "Sqlite数据库文件(*.db)|*.db|All files (*.*)|*.*"; /// ///私有构造函数 /// private FileDialogHelper() { } #region 普通文件操作 /// /// 打开所有文件 /// /// public static string OpenFile() { return Open("打开文件", AllFilter); } /// /// 打开所有文件 /// /// 是否支持多选 /// public static string OpenFile(bool multiselect) { return OpenFile(multiselect, ""); } /// /// 打开所有文件 /// /// 是否支持多选 /// 文件名称 /// public static string OpenFile(bool multiselect, string fileName) { return OpenFile(multiselect, fileName, null); } /// /// 打开所有文件 /// /// 是否支持多选 /// 文件名称 /// 初始化目录路径 /// public static string OpenFile(bool multiselect, string fileName, string initialDirectory) { if (multiselect) { return OpenMultiselect("打开多个文件", AllFilter, fileName, initialDirectory); } else { return Open("打开文件", AllFilter, fileName, initialDirectory); } } /// /// 保存文件对话框,并返回保存全路径 /// /// public static string SaveFile() { return SaveFile(string.Empty); } /// /// 保存文件对话框,并返回保存全路径 /// /// 文件名称 /// public static string SaveFile(string filename) { return Save("保存文件", AllFilter, filename); } /// /// 保存文件对话框,并返回保存全路径 /// /// 文件名称 /// 初始化目录路径 /// public static string SaveFile(string filename, string initialDirectory) { return Save("保存文件", AllFilter, filename, initialDirectory); } #endregion #region Txt相关对话框 /// /// 打开Txt对话框 /// /// public static string OpenText() { return Open("选择文本文件选择", TxtFilter); } /// /// 打开Txt对话框 /// /// 是否支持多选 /// public static string OpenText(bool multiselect) { return OpenText(multiselect, ""); } /// /// 打开Txt对话框 /// /// 是否支持多选 /// 文件名称 /// public static string OpenText(bool multiselect, string fileName) { return OpenText(multiselect, fileName, null); } /// /// 打开Txt对话框 /// /// 是否支持多选 /// 文件名称 /// 初始化目录路径 /// public static string OpenText(bool multiselect, string fileName, string initialDirectory) { if (multiselect) { return OpenMultiselect("选择多个文本文件", TxtFilter, fileName); } else { return Open("选择文本文件", TxtFilter, fileName); } } /// /// 保存Excel对话框,并返回保存全路径 /// /// public static string SaveText() { return SaveText(string.Empty); } /// /// 保存Excel对话框,并返回保存全路径 /// /// 文件名称 /// public static string SaveText(string filename) { return Save("保存文本文件", TxtFilter, filename); } /// /// 保存Excel对话框,并返回保存全路径 /// /// 文件名称 /// 初始化目录 /// public static string SaveText(string filename, string initialDirectory) { return Save("保存文本文件", TxtFilter, filename, initialDirectory); } #endregion #region Excel相关对话框 /// /// 打开Excel对话框 /// /// public static string OpenExcel() { return Open("Excel选择", ExcelFilter); } /// /// 打开Excel对话框 /// /// 是否支持多选 /// public static string OpenExcel(bool multiselect) { return OpenExcel(multiselect, ""); } /// /// 打开Excel对话框 /// /// 是否支持多选 /// 文件名称 /// public static string OpenExcel(bool multiselect, string fileName) { return OpenExcel(multiselect, fileName, null); } /// /// 打开Excel对话框 /// /// public static string OpenExcel(bool multiselect, string fileName, string initialDirectory) { if (multiselect) { return OpenMultiselect("选择多个Excel文件", ExcelFilter, fileName, initialDirectory); } else { return Open("Excel选择", ExcelFilter, fileName, initialDirectory); } } /// /// 保存Excel对话框,并返回保存全路径 /// /// public static string SaveExcel() { return SaveExcel(string.Empty); } /// /// 保存Excel对话框,并返回保存全路径 /// /// public static string SaveExcel(string filename) { return Save("保存Excel", ExcelFilter, filename); } /// /// 保存Excel对话框,并返回保存全路径 /// /// public static string SaveExcel(string filename, string initialDirectory) { return Save("保存Excel", ExcelFilter, filename, initialDirectory); } #endregion #region Word相关对话框 /// /// 打开Word对话框 /// /// public static string OpenWord() { return Open("Word选择", WordFilter); } /// /// 打开Word对话框 /// /// 是否支持多选 /// public static string OpenWord(bool multiselect) { return OpenWord(multiselect, ""); } /// /// 打开Word对话框 /// /// 是否支持多选 /// 文件名称 /// public static string OpenWord(bool multiselect, string fileName) { return OpenWord(multiselect, fileName, null); } /// /// 打开Word对话框 /// /// public static string OpenWord(bool multiselect, string fileName, string initialDirectory) { if (multiselect) { return OpenMultiselect("选择多个Word文件", WordFilter, fileName, initialDirectory); } else { return Open("Word选择", WordFilter, fileName, initialDirectory); } } /// /// 保存Word对话框,并返回保存全路径 /// /// public static string SaveWord() { return SaveWord(string.Empty); } /// /// 保存Word对话框,并返回保存全路径 /// /// public static string SaveWord(string filename) { return Save("保存Word", WordFilter, filename); } /// /// 保存Word对话框,并返回保存全路径 /// /// public static string SaveWord(string filename, string initialDirectory) { return Save("保存Word", WordFilter, filename, initialDirectory); } #endregion #region PDF相关对话框 /// /// 打开Pdf对话框 /// /// public static string OpenPdf() { return Open("PDF选择", PdfFilter); } /// /// 打开Pdf对话框 /// /// 是否支持多选 /// public static string OpenPdf(bool multiselect) { return OpenPdf(multiselect, ""); } /// /// 打开Pdf对话框 /// /// 是否支持多选 /// 文件名称 /// public static string OpenPdf(bool multiselect, string fileName) { return OpenPdf(multiselect, fileName, null); } /// /// 打开Pdf对话框 /// /// public static string OpenPdf(bool multiselect, string fileName, string initialDirectory) { if (multiselect) { return OpenMultiselect("选择多个Pdf文件", PdfFilter, fileName, initialDirectory); } else { return Open("Pdf选择", PdfFilter, fileName, initialDirectory); } } /// /// 保存Pdf对话框,并返回保存全路径 /// /// public static string SavePdf() { return SavePdf(string.Empty); } /// /// 保存Pdf对话框,并返回保存全路径 /// /// public static string SavePdf(string filename) { return Save("保存Pdf", PdfFilter, filename); } /// /// 保存Pdf对话框,并返回保存全路径 /// /// public static string SavePdf(string filename, string initialDirectory) { return Save("保存Pdf", PdfFilter, filename, initialDirectory); } #endregion #region HTML相关对话框 /// /// 打开Html对话框 /// /// public static string OpenHtml() { return Open("Html选择", HtmlFilter); } /// /// 打开Html对话框 /// /// public static string OpenHtml(bool multiselect) { if (multiselect) { return OpenMultiselect("选择多个Html文件", HtmlFilter, ""); } else { return Open("Html选择", HtmlFilter); } } /// /// 保存Html对话框,并返回保存全路径 /// /// public static string SaveHtml() { return SaveHtml(string.Empty); } /// /// 保存Html对话框,并返回保存全路径 /// /// public static string SaveHtml(string filename) { return Save("保存Html", HtmlFilter, filename); } /// /// 保存Html对话框,并返回保存全路径 /// /// public static string SaveHtml(string filename, string initialDirectory) { return Save("保存Html", HtmlFilter, filename, initialDirectory); } #endregion #region 压缩文件相关 /// /// 压缩文件选择 /// /// public static string OpenZip() { return Open("压缩文件选择", ZipFillter); } /// /// 压缩文件选择 /// /// public static string OpenZip(string filename) { return Open("压缩文件选择", ZipFillter, filename); } /// /// 选择多个压缩文件 /// /// public static string OpenZip(bool multiselect) { return OpenZip(multiselect, ""); } /// /// 选择多个压缩文件 /// /// public static string OpenZip(bool multiselect, string fileName) { return OpenZip(multiselect, fileName, null); } /// /// 选择多个压缩文件 /// /// public static string OpenZip(bool multiselect, string fileName, string initialDirectory) { if (multiselect) { return OpenMultiselect("选择多个压缩文件", ZipFillter, fileName, initialDirectory); } else { return Open("压缩文件选择", ZipFillter, fileName, initialDirectory); } } /// /// 保存Zip压缩文件 /// /// public static string SaveZip() { return SaveZip(string.Empty); } /// /// 保存Zip压缩文件 /// /// public static string SaveZip(string filename) { return Save("压缩文件保存", ZipFillter, filename); } /// /// 保存Zip压缩文件 /// /// public static string SaveZip(string filename, string initialDirectory) { return Save("压缩文件保存", ZipFillter, filename, initialDirectory); } #endregion #region Rar压缩文件相关 /// /// 压缩文件选择 /// /// public static string OpenRar() { return Open("RAR压缩文件选择", RarFilter); } /// /// Rar压缩文件选择 /// /// public static string OpenRar(string filename) { return Open("RAR压缩文件选择", RarFilter, filename); } /// /// 选择多个Rar压缩文件 /// /// public static string OpenRar(bool multiselect) { return OpenRar(multiselect, ""); } /// /// 选择多个Rar压缩文件 /// /// public static string OpenRar(bool multiselect, string fileName) { return OpenRar(multiselect, fileName, null); } /// /// 选择多个Rar压缩文件 /// /// public static string OpenRar(bool multiselect, string fileName, string initialDirectory) { if (multiselect) { return OpenMultiselect("选择多个压缩文件", RarFilter, fileName, initialDirectory); } else { return Open("压缩文件选择", RarFilter, fileName, initialDirectory); } } /// /// 保存Rar压缩文件 /// /// public static string SaveRar() { return SaveRar(string.Empty); } /// /// 保存Rar压缩文件 /// /// public static string SaveRar(string filename) { return Save("压缩文件保存", RarFilter, filename); } /// /// 保存Rar压缩文件 /// /// public static string SaveRar(string filename, string initialDirectory) { return Save("Rar压缩文件保存", RarFilter, filename, initialDirectory); } #endregion #region Sqlite数据库文件相关 /// /// Sqlite数据库文件选择 /// /// public static string OpenSqlite() { return Open("Sqlite数据库文件选择", SqliteFilter); } /// /// Sqlite数据库选择 /// /// public static string OpenSqlite(string filename) { return Open("Sqlite数据库文件选择", SqliteFilter, filename); } /// /// 选择多个Sqlite数据库 /// /// public static string OpenSqlite(bool multiselect) { return OpenSqlite(multiselect, ""); } /// /// 选择多个Sqlite数据库 /// /// public static string OpenSqlite(bool multiselect, string fileName) { return OpenSqlite(multiselect, fileName, null); } /// /// 选择多个Sqlite数据库 /// /// public static string OpenSqlite(bool multiselect, string fileName, string initialDirectory) { if (multiselect) { return OpenMultiselect("选择多个Sqlite数据库文件", SqliteFilter, fileName, initialDirectory); } else { return Open("Sqlite数据库文件选择", SqliteFilter, fileName, initialDirectory); } } /// /// 保存Sqlite数据库 /// /// public static string SaveSqlite() { return SaveSqlite(string.Empty); } /// /// 保存Sqlite数据库 /// /// public static string SaveSqlite(string filename) { return Save("Sqlite数据库文件保存", SqliteFilter, filename); } /// /// 保存Sqlite数据库 /// /// public static string SaveSqlite(string filename, string initialDirectory) { return Save("Sqlite数据库文件保存", SqliteFilter, filename, initialDirectory); } #endregion #region Xml文件相关 /// /// Xml文件选择 /// /// public static string OpenXml() { return Open("Xml文件选择", XmlFilter); } /// /// Xml文件选择 /// /// public static string OpenXml(string filename) { return Open("Xml数据库文件选择", XmlFilter, filename); } /// /// 选择多个Xml文件 /// /// public static string OpenXml(bool multiselect) { return OpenXml(multiselect, ""); } /// /// 选择多个Xml文件 /// /// public static string OpenXml(bool multiselect, string fileName) { return OpenXml(multiselect, fileName, null); } /// /// 选择多个Xml文件 /// /// public static string OpenXml(bool multiselect, string fileName, string initialDirectory) { if (multiselect) { return OpenMultiselect("选择多个Xml文件", XmlFilter, fileName, initialDirectory); } else { return Open("Xml文件选择", XmlFilter, fileName, initialDirectory); } } /// /// 保存Xml文件 /// /// public static string SaveXml() { return SaveXml(string.Empty); } /// /// 保存Xml数据库 /// /// public static string SaveXml(string filename) { return Save("Xml文件保存", XmlFilter, filename); } /// /// 保存Xml数据库 /// /// public static string SaveXml(string filename, string initialDirectory) { return Save("Xml文件保存", XmlFilter, filename, initialDirectory); } #endregion #region 图片相关 /// /// 打开图片文件 /// /// public static string OpenImage() { return Open("图片选择", ImageFilter); } /// /// 打开图片文件 /// /// public static string OpenImage(bool multiselect) { return OpenImage(multiselect, ""); } /// /// 打开图片文件 /// /// public static string OpenImage(bool multiselect, string fileName) { return OpenImage(multiselect, fileName, null); } /// /// 打开图片文件 /// /// public static string OpenImage(bool multiselect, string fileName, string initialDirectory) { if (multiselect) { return OpenMultiselect("选择多个图片", ImageFilter, fileName, initialDirectory); } else { return Open("图片选择", ImageFilter, fileName, initialDirectory); } } /// /// 保存图片对话框,并返回保存全路径 /// /// public static string SaveImage() { return SaveImage(string.Empty); } /// /// 保存图片对话框并设置默认文件名,并返回保存全路径 /// /// public static string SaveImage(string filename) { return Save("保存图片", ImageFilter, filename); } /// /// 保存图片对话框并设置默认文件名,并返回保存全路径 /// /// public static string SaveImage(string filename, string initialDirectory) { return Save("保存图片", ImageFilter, filename, initialDirectory); } #endregion #region 数据库备份还原 /// /// 保存数据库备份对话框 /// /// 数据库备份路径 public static string SaveAccessDb() { return Save("数据库备份", AccessFilter); } /// /// 保存Access备份目录 /// /// public static string SaveBakDb() { return Save("数据库备份", "Access(*.bak)|*.bak"); } /// /// 打开Access备份目录 /// /// 备份文件名 /// public static string OpenBakDb(string file) { return Open("数据库还原", "Access(*.bak)|*.bak", file); } /// /// 数据库还原对话框 /// /// 数据库还原路径 public static string OpenAccessDb() { return Open("数据库还原", AccessFilter); } #endregion #region 配置文件 /// /// 保存配置文件备份对话框 /// /// 配置文件备份路径 public static string SaveConfig() { return Save("配置文件备份", ConfigFilter); } /// /// 配置文件还原对话框 /// /// 配置文件还原路径 public static string OpenConfig() { return Open("配置文件还原", ConfigFilter); } #endregion #region 通用函数 /// /// 打开文件夹浏览对话框 /// /// public static string OpenDir() { return OpenDir(string.Empty); } /// /// 以指定目录打开文件夹浏览对话框 /// /// 指定目录 /// public static string OpenDir(string selectedPath) { FolderBrowserDialog dialog = new FolderBrowserDialog(); dialog.Description = "请选择路径"; dialog.SelectedPath = selectedPath; if (dialog.ShowDialog() == DialogResult.OK) { return dialog.SelectedPath; } else { return string.Empty; } } /// /// 打开多个文件列表 /// /// 对话框标题 /// 后缀名过滤 /// 默认文件名 /// public static string OpenMultiselect(string title, string filter, string filename) { return OpenMultiselect(title, filter, filename, null); } /// /// 打开多个文件列表 /// /// 对话框标题 /// 后缀名过滤 /// 默认文件名 /// 初始化目录 /// public static string OpenMultiselect(string title, string filter, string filename, string initialDirectory) { OpenFileDialog dialog = new OpenFileDialog(); dialog.Filter = filter; dialog.Title = title; dialog.RestoreDirectory = true; dialog.FileName = filename; dialog.Multiselect = true; if (!string.IsNullOrEmpty(initialDirectory)) { dialog.InitialDirectory = initialDirectory; } string result = ""; if (dialog.ShowDialog() == DialogResult.OK) { foreach (string strFile in dialog.FileNames) { result += string.Format("{0},", strFile); } } return result.Trim(','); } /// /// 以指定标题打开文件对话框 /// /// 对话框标题 /// 后缀名过滤 /// 默认文件名 /// public static string Open(string title, string filter, string filename) { return Open(title, filter, filename, null); } /// /// 以指定标题打开文件对话框 /// /// 对话框标题 /// 后缀名过滤 /// 默认文件名 /// 初始化目录 /// public static string Open(string title, string filter, string filename, string initialDirectory) { OpenFileDialog dialog = new OpenFileDialog(); dialog.Filter = filter; dialog.Title = title; dialog.RestoreDirectory = true; dialog.FileName = filename; if (!string.IsNullOrEmpty(initialDirectory)) { dialog.InitialDirectory = initialDirectory; } if (dialog.ShowDialog() == DialogResult.OK) { return dialog.FileName; } else { return string.Empty; } } /// /// 以指定标题打开文件对话框 /// /// 对话框标题 /// 后缀名过滤 /// public static string Open(string title, string filter) { return Open(title, filter, string.Empty); } /// /// 以指定的标题弹出保存文件对话框 /// /// 对话框标题 /// 后缀名过滤 /// 默认文件名 /// public static string Save(string title, string filter, string filename) { return Save(title, filter, filename, ""); } /// /// 以指定的标题弹出保存文件对话框 /// /// 对话框标题 /// 后缀名过滤 /// 默认文件名 /// 初始化目录 /// public static string Save(string title, string filter, string filename, string initialDirectory) { SaveFileDialog dialog = new SaveFileDialog(); dialog.Filter = filter; dialog.Title = title; dialog.FileName = filename; dialog.RestoreDirectory = true; if (!string.IsNullOrEmpty(initialDirectory)) { dialog.InitialDirectory = initialDirectory; } if (dialog.ShowDialog() == DialogResult.OK) { return dialog.FileName; } return string.Empty; } /// /// 以指定的标题弹出保存文件对话框 /// /// 对话框标题 /// 后缀名过滤 /// public static string Save(string title, string filter) { return Save(title, filter, string.Empty); } #endregion #region 获取颜色对话框的颜色 /// /// 获取颜色对话框的值 /// /// public static Color PickColor() { Color result = SystemColors.Control; ColorDialog form = new ColorDialog(); if (DialogResult.OK == form.ShowDialog()) { result = form.Color; } return result; } /// /// 获取颜色对话框的值 /// /// 默认颜色 /// public static Color PickColor(Color color) { Color result = SystemColors.Control; ColorDialog form = new ColorDialog(); form.Color = color; if (DialogResult.OK == form.ShowDialog()) { result = form.Color; } return result; } #endregion } }