示例#1
0
        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;
        }
示例#3
0
        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;
                }
            }
        }