玩手机的数据线 · 温州市森马协和2020义务教育阶段招生报名时 ...· 2 月前 · |
快乐的小熊猫 · [亲测可用]3dmax2019中文版/英文版 ...· 3 月前 · |
彷徨的骆驼 · 有轨电车奇观:备受城市追捧,却难盈利-虎嗅网· 4 月前 · |
呐喊的柿子 · 全国大中专教材网络采选系统· 8 月前 · |
活泼的奔马 · JavaScript - 本人的窝· 10 月前 · |
我开发了一个WPF4应用程序,在我的应用程序中,我需要让用户选择一个文件夹,应用程序将在其中存储一些东西(文件、生成的报告等)。
我的要求:
据我所知,直到2010年(.Net 4.0)才会有一个标准的文件夹对话框,但也许在4.0版本中会有一些变化?
或者我唯一能做的就是用一个老式的
WinForms
对话框?如果这是我所需要的唯一方法,我如何使它看起来更接近Vista/7风格而不是Win9x?
发布于 2020-12-08 14:02:17
FolderBrowserDialog
类是
System.Windows.Forms
中推荐的显示对话框的方法,该对话框允许用户选择文件夹。
直到最近,这个对话框的外观和行为还与其他文件系统对话框不一致,这也是人们不愿意使用它的原因之一。
好消息是
FolderBrowserDialog
NET 3.0中的“现代化”
,对于那些针对该版本或更高版本编写Windows或WPF应用程序的人来说,这也是一个可行的选择。
在WindowsCore3.0中,Windows用户使用Windows中引入的一种新的基于COM的控件:
对于 在应用程序中 ,必须编辑项目文件并添加以下行:
<UseWindowsForms>true</UseWindowsForms>
这可以直接放在现有的
<UseWPF>
元素之后。
那么这只是一个使用对话框的例子:
using System;
using System.Windows.Forms;
using var dialog = new FolderBrowserDialog
Description = "Time to select a folder",
UseDescriptionForTitle = true,
SelectedPath = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory)
+ Path.DirectorySeparatorChar,
ShowNewFolderButton = true
if (dialog.ShowDialog() == DialogResult.OK)
}
FolderBrowserDialog
有一个
RootFolder
属性,据说它“设置了从这里开始浏览的根文件夹”,但是无论我将它设置为什么,它都没有任何区别;
SelectedPath
似乎是用于这个目的的更好的属性,但是需要后面的反斜杠。
另外,
ShowNewFolderButton
属性似乎也被忽略了,按钮总是被显示出来。
发布于 2010-10-24 15:18:01
我很久以前就在我的博客上写过,WPF对普通文件对话框的支持非常糟糕(或者至少是在3.5中,我没有签入第4版),但是很容易绕过它。
您需要向应用程序添加正确的清单,这将为您提供一个现代风格的消息框和文件夹浏览器(
WinForms
,
FolderBrowserDialog
),而不是打开/保存对话框的WPF文件,这将在这3篇文章中描述(如果您不关心解释,只希望解决方案直接转到第3页):
幸运的是,打开/保存对话框是Win32 API的非常薄的包装器,很容易用正确的标志调用以获得Vista/7样式(在设置清单之后)。
发布于 2016-07-23 13:53:33
将 Windows API代码包-Shell 添加到项目中
using Microsoft.WindowsAPICodePack.Dialogs;