提问人:Makaveli84 提问时间:10/22/2023 最后编辑:Makaveli84 更新时间:10/22/2023 访问量:76
Windows 窗体 (.NET) 中文件对话框中的深色模式差异
Dark mode discrepancy in file dialogs in Windows Forms (.NET)
问:
使用 C#/.NET 编写应用程序 (Windows 窗体/.NET Framework 4.7.2)
当我在我的应用程序中调用表单时,它似乎遵循系统的设置(当全局禁用深色模式时,浅色对话框显示,当全系统范围启用深色模式时,深色对话框显示)。SaveFileDialog
在同一应用程序中,无论系统设置如何,和 始终以“浅色模式”显示。OpenFileDialog
FolderBrowserDialog
有没有办法强制和尊重系统的主题?OpenFileDialog
FolderBrowserDialog
编辑1:似乎控件调用了系统的本机,而 .NET 中的(可能还有)控件是本机系统对话框的包装器。在这方面,一个可接受的“解决方法”是从 .NET 中调用本机对话框(可能使用 Windows API),假设本机对话框默认遵循系统的深色模式设置。SaveFileDialog
Save Dialog
OpenFileDialog
FolderBrowserDialog
编辑2:关于,在遇到这个 SO 问题后,其中一条评论表明启用会导致显示“较旧”的对话版本,我设法显示“新式”对话框。虽然我没有启用自己,但我确实启用了。禁用它就成功了。不确定此行为是否被记录在案,但肯定不明显。就这个问题而言,虽然问题现在已经解决,但问题仍然存在。OpenFileDialog
ShowHelp
ShowHelp
ShowReadOnly
OpenFileDialog
FolderBrowserDialog
答:
若要支持深色模式,请确保其属性设置为 True。此外,请确保其和属性设置为 false。新式对话框变体不支持这些 ui 元素。OpenFileDialog
AutoUpgradeEnabled
ShowReadOnly
ShowHelp
它还允许它支持深色模式,但仅从 .net Core 开始。这在 .Net Framework 4.8 及之前版本中不受支持。FolderBrowserDialog
AutoUpgradeEnabled
只要您仍然使用 .net Framekwork 4.x,请将其替换为其他组件。有大量的 FolderBrowserDialog 的开源变体或仅支持选择文件夹的变体。FolderBrowserDialog
OpenFileDialog
您还可以编写自己的变体,该变体仅支持基于 IFileDialog
API 的选取文件夹。设置FOS_PICKFOLDERS
选项。例如,请参阅尝试使用 C# 中的新 IFileDialog 和 IFileOpenDialog 接口以最少的代码打开文件对话框或从 PropertyGrid 显示详细的文件夹浏览器,了解可能的实现。OpenFileDialog
评论