public static void AddFilter(this VistaFileDialog vfd, string extension) { if (!extension.StartsWith(".")) { extension = "." + extension; } using (RegistryKey hkExt = Registry.ClassesRoot.OpenSubKey(extension)) { if (hkExt == null || !(hkExt.GetValue(null) is string identifier)) { return; } using (RegistryKey hkIdentifier = Registry.ClassesRoot.OpenSubKey(identifier)) { if (hkIdentifier == null || !(hkIdentifier.GetValue(null) is string displayName)) { return; } vfd.AddFilter(displayName, $"*{extension}"); } } }
public VistaFileDialogEvents(VistaFileDialog dialog) { if (dialog == null) { throw new ArgumentNullException("dialog"); } _dialog = dialog; }
public static void AddFilter(this VistaFileDialog vfd, string displayName, string pattern) { string filter = $@"{displayName}|{pattern}"; if (string.IsNullOrEmpty(vfd.Filter)) { vfd.Filter = filter; } else { vfd.Filter += $@"|{filter}"; } }
private static void TranslateDefaultExt([NotNull] VistaFileDialog dialog) { if (string.IsNullOrWhiteSpace(dialog.DefaultExt)) { return; } var ext = "*." + dialog.DefaultExt; var filter = dialog.Filter; var filters = filter.Split('|'); for (var i = 1; i < filters.Length; i += 2) { if (filters[i] == ext) { dialog.FilterIndex = 1 + (i - 1) / 2; } } }