コード例 #1
0
        protected override void OnTypeChange(IFileDialog dialog)
        {
            var filterData = FilterData.CreateFromFilter(Filter);

            dialog.GetFileTypeIndex(out var index);
            var entry = filterData.EntryAt(index);

            var ext = entry.IsAnyFilter() ? DefaultExt : entry.Extensions.FirstOrDefault();

            if (!string.IsNullOrEmpty(ext))
            {
                if (ext.StartsWith(".", StringComparison.CurrentCulture))
                {
                    ext = ext.Substring(1);
                }
                else if (ext.Length == 0)
                {
                    ext = null;
                }
                dialog.SetDefaultExtension(ext);
            }

            // Resetting the name is required at this point.
            dialog.GetFileName(out var fileName);
            if (string.IsNullOrEmpty(fileName))
            {
                fileName = FileName;
            }
            var fileNameWihtoutExtension = Path.GetFileNameWithoutExtension(fileName);

            dialog.SetFileName($"{fileNameWihtoutExtension}.{ext}");
        }