多点扩展使Windows.Forms.CommonDialog增加了一倍

时间:2018-08-07 09:22:56

标签: c# winforms dialog file-extension

我正在尝试保存带有双点扩展名的文件。但是每当我这样做时,文件的扩展名都加倍(对于我来说),我选择另存为.lmk.ilu扩展名,但是文件的最终扩展名是filename.lmk.ilu.lmk.ilu

这是代码:

public static bool BrowseForFileToSave(BrowserInfo info, IWin32Window owner, string title)
    {
        var dlg = new SaveFileDialog
        {
            OverwritePrompt = info.OverwritePrompt,
            DefaultExt = info.DefaultExt,
            Filter = info.Filter,
            FilterIndex = info.FilterIndex,
            FileName = info.FileName,
            InitialDirectory =
                info.UseLastFolderAsInitialDirectory && BrowserInfo.LastFolder != null
                    ? BrowserInfo.LastFolder
                    : info.InitialDirectory
        };

        if (title != null)
            dlg.Title = title;

        if(info.FileNameValidationCallback != null)
            dlg.FileOk += info.FileNameValidationCallback;

        var result = dlg.ShowDialog(owner);
        if (result == DialogResult.OK)
        {
            BrowserInfo.LastFolder = Path.GetDirectoryName(dlg.FileName);
            info.FileName = dlg.FileName;
            return true;
        }

        return false;
    }

调试到

时一切都很好
var result = dlg.ShowDialog(owner);

到目前为止,dlg.FileName为空。然后,在对话框操作完成之后,名称已经具有四个扩展名,而不是两个。

考虑到单点扩展名可以正常工作并且SupportMultiDottedExtensions = true没有帮助,当我选择两个扩展名时,如何使它只有两个扩展名?

编辑:

Save File Dialog , restrict name

我实现了File.Ok名称验证,但是一旦按下“保存”按钮,它就会起作用。

如何在从“另存为类型”下拉菜单中选择一个选项时(即在关闭对话框之前)验证扩展名?

0 个答案:

没有答案