预检清单
- 我已阅读了此项目的 Contributing Guidelines。
- 我同意遵循此项目遵循的 Code of Conduct 。
- 我在问题跟踪器中搜索了一个与我想提交的功能请求相匹配的问题,但没有成功。
问题描述
在 Windows 中,无法将保存文件对话框的默认过滤器设置为 All Files (*.*)
。这很麻烦,因为通常当你想保存一个没有/未知扩展名的文件(如 .babelrc
)时,它会附加第一个过滤器的扩展名。例如:microsoft/vscode#28425
我知道这是故意不允许的,就像 shell/browser/ui/file_dialog_win#L206
中所示:
// By default, *.* will be added to the file name if file type is "*.*". In
// Electron, we disable it to make a better experience.
// ...
for (size_t i = 0; i < filterspec.size(); ++i) {
if (std::wstring(filterspec[i].pszSpec) != L"*.*") {
// SetFileTypeIndex is regarded as one-based index.
dialog->SetFileTypeIndex(i + 1);
dialog->SetDefaultExtension(filterspec[i].pszSpec);
break;
}
}
它基本上选择了第一个过滤器作为默认值,除了 All Files 过滤器 ,因为据说它会将 *.*
附加到文件名上。然而,必须有一种方法可以做到这一点,因为其他程序可以这样做(不幸的是,我想不出任何开源程序,我们可以查看源代码)。
建议的解决方案
目前没有真正准备好的解决方案。只需要弄清楚如何允许它并避免这个问题。也许如果我们不是将默认扩展名设置为 "*.*"
而是在 All Files 过滤器使用时将其设置为 ""
,我们就可以同时实现这两个功能。
考虑过的替代方案
验证 将 *.*
附加到文件名 的问题是否真的发生。如果没有发生,我们可以直接剪切代码。
3条答案
按热度按时间irlmq6kh1#
在这里也存在同样的问题。
kq0g1dla2#
在Mac上,它运行正常,而在Windows上,它总是显示"All files *"。
在这个演示中,我在electron中使用了URL(
https://codepen.io/tongdada-the-sans/pen/OKjxgJ
)。图片:
关于如何解决这种情况,我找到了一个解决方案,就是在文件名后添加一个后缀,尽管它的名称已经有一个
.ext
。请看下面的示例。在Windows 10上,我们可以在文件名后添加两个
ext
,但是系统选择的saveFiledialog
总是显示一个All type(*)
。我不知道如何解决这个问题。llmtgqce3#
这是一个巨大的问题,尤其是在VS Code中。由于它将未知新文件的默认文件类型设置为“纯文本(*.txt)”,用户在保存以查找重复项、遵循命名模式或单击现有文件作为模板并重命名等时,无法在现有目录中看到任何文件。
(我来自6年前的这个VS Code错误报告) microsoft/vscode#28425
当然,这可以在Electron中解决,但如果不能解决,那么这感觉就像是另一个迫切需要AHK脚本的需求。