Microsoft.Win32.SaveFileDialog有效的文件名问题

本文关键字:文件名 问题 有效 Win32 SaveFileDialog Microsoft | 更新日期: 2023-09-27 18:06:39

使用。net 4.5运行一个用c#编写的应用程序。当我调用SaveFileDialog时,我在文件名验证方面得到了不同的结果。如果我输入一些常见的{}<>/|等。我得到一个错误,文件名无效。这正是我所期望的。

然而,有两个通常的疑点会引起问题。如果我输入一个问号(?)或星号(*),那么当我点击保存时,什么也没有发生。没有关于无效字符的错误消息,对话框保持打开状态。我希望用户知道为什么没有发生,并告诉他们字符是无效的。我在网上找不到任何关于这个已知bug的信息。

任何想法?我知道我可以将自己的事件添加到FileOK,但它只在一个构建后执行,所以这对我没有好处,因为FileOK事件从不触发。

Microsoft.Win32.SaveFileDialog有效的文件名问题

这是一个从Windows 3.1开始就存在于Windows公共文件对话框中的功能。它的作用是允许您使用文件名输入框以一种特殊的方式过滤当前目录的文件列表。早在2010年,Raymond Chen就在他的博客中讨论过这个问题:

如果您键入一个通配符,如?或者将*输入到一个通用的文件对话框中,对话框将其解释为将文件列表过滤为与您指定的通配符匹配的文件的请求。在这个特定的示例中,输入?.jpg表示"显示扩展名为.jpg的所有单字符文件"。根据原始报告中的描述,我推断客户的测试是在一个空目录中进行的(因此过滤器不起作用)。

我猜您也在空文件夹中测试了它,或者您会注意到当键入问号时文件列表会被过滤。