using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Windows.Forms; namespace Common { public class Dialogs { public const string AnyFile = "Any file"; public const string AnyFileExt = "*"; public static bool OpenFileDialog(string fileName, string[] fileTypes, string defaultExt, out string newFileName) { string filter = string.Join(@"|", fileTypes) + @"|" + AnyFile + @"|*." + AnyFileExt; OpenFileDialog openFileDialog = new OpenFileDialog { Filter = filter, DefaultExt = defaultExt }; if (!string.IsNullOrEmpty(fileName)) { openFileDialog.FileName = Path.GetFileName(fileName); openFileDialog.InitialDirectory = Path.GetDirectoryName(fileName); } if (openFileDialog.ShowDialog() == DialogResult.OK) { newFileName = openFileDialog.FileName; return true; } else { newFileName = null; return false; } } public static bool OpenFileDialogMulti(string fileName, string fileType, string fileExtension, out string[] newFileNames) { if (fileExtension.StartsWith(".", StringComparison.Ordinal)) fileExtension = fileExtension.Substring(1); OpenFileDialog openFileDialog = new OpenFileDialog { Filter = fileType + @"|*." + fileExtension + @"|" + AnyFile + @"|*." + AnyFileExt, DefaultExt = fileExtension }; if (!string.IsNullOrEmpty(fileName)) { openFileDialog.FileName = Path.GetFileName(fileName); openFileDialog.InitialDirectory = Path.GetDirectoryName(fileName); } openFileDialog.Multiselect = true; if (openFileDialog.ShowDialog() == DialogResult.OK) { newFileNames = openFileDialog.FileNames; return true; } else { newFileNames = null; return false; } } public static bool SaveFileDialog(string fileName, string fileType, string fileExtension, out string newFileName) { if (fileExtension.StartsWith(".", StringComparison.Ordinal)) fileExtension = fileExtension.Substring(1); SaveFileDialog saveFileDialog = new SaveFileDialog { Filter = fileType + @"|*." + fileExtension + @"|" + AnyFile + @"|*." + AnyFileExt, DefaultExt = fileExtension }; if (!string.IsNullOrEmpty(fileName)) { saveFileDialog.FileName = Path.GetFileName(fileName); saveFileDialog.InitialDirectory = Path.GetDirectoryName(fileName); } if (saveFileDialog.ShowDialog() == DialogResult.OK) { newFileName = saveFileDialog.FileName; return true; } else { newFileName = null; return false; } } } }