打开目录对话框

2023-12-02

我希望用户选择一个目录,用于保存我将生成的文件。我知道在 WPF 中我应该使用OpenFileDialog来自 Win32,但不幸的是,该对话框需要选择文件 - 如果我只是单击“确定”而不选择文件,它就会保持打开状态。我可以通过让用户选择一个文件然后剥离路径来找出它属于哪个目录来“破解”该功能,但这充其量是不直观的。以前有人见过这样做吗?


您可以使用内置的文件夹浏览器对话框为此类。不要介意它在System.Windows.Forms命名空间。

using (var dialog = new System.Windows.Forms.FolderBrowserDialog())
{
    System.Windows.Forms.DialogResult result = dialog.ShowDialog();
}

如果您希望窗口在某些 WPF 窗口上为模态窗口,请参阅问题如何从 WPF 应用程序使用FolderBrowserDialog.


EDIT:如果您想要比简单、丑陋的 Windows 窗体FolderBrowserDialog 更奇特的东西,有一些替代方案可以让您使用 Vista 对话框:

  • 第三方库,例如Ookii 对话框(.NET 4.5+)

  • The Windows API代码包-Shell:

      using Microsoft.WindowsAPICodePack.Dialogs;
    
      ...
    
      var dialog = new CommonOpenFileDialog();
      dialog.IsFolderPicker = true;
      CommonFileDialogResult result = dialog.ShowDialog();
    

    请注意,此对话框在早于 Windows Vista 的操作系统上不可用,因此请务必检查CommonFileDialog.IsPlatformSupported first.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

打开目录对话框 的相关文章

  • 当用户打开文件时如何锁定对文件的访问?

    我正在编写一个 C NET 程序 该程序使用 XmlSerializer 对当前用户正在处理的项目与 XML 文件进行序列化和反序列化 这工作正常 但我试图找到一种方法来防止两个用户从网络驱动器打开同一个文件并让一个用户覆盖前一个用户的保存
  • 在 NUnit 测试中使用 WPF 组件 - 如何使用 STA?

    我需要在 NUnit 单元测试中使用一些 WPF 组件 我通过 ReSharper 运行测试 在使用 WPF 对象时失败并出现以下错误 系统 InvalidOperationException 调用线程必须是 STA 因为许多 UI 组件都
  • 确定最接近的已知颜色

    我允许我的应用程序的用户选择自定义颜色 并希望有一种方法来显示每种颜色的友好名称 而不是显示十六进制代码的文本表示形式 我如何找到最近的System Drawing Color对于给定的十六进制代码 希望这对某人有帮助 Public Fun
  • 主从视图中聚合详细信息值

    我在一些自定义实体中有主从关系 假设我有以下结构 class Master INotifyPropertyChanged public int Id get set property changed implementation publi
  • 如何使取消按钮像“X”按钮一样工作?

    在我的 XAML 文件中 我有一个窗口 我试图将其设置为无论用户单击 X 按钮还是单击 取消 按钮 行为都是相同的 我的缩写代码如下 public partial class Dialog Window private void Windo
  • .NET 内存不足故障排除

    在阅读了几篇有关 NET 技术中的内存的启发性文章后 Out of Memory 不是指物理内存 https learn microsoft com en us archive blogs ericlippert out of memory
  • 如何在加载.NET WinForm应用程序user.config文件时捕获异常?

    有时 在使用默认配置系统的 NET 2 0 WinForm 桌面应用程序中 user config文件将被损坏并且无法再加载 当配置系统尝试加载它时 它会抛出一个System Xml XmlException 抛开 为什么文件首先被损坏 的
  • 从 Excel 应用程序对象中查找位数(32 位/64 位)?

    是否可以从 Microsoft Office Interop Excel ApplicationClass 确定 Excel 是以 32 位还是 64 位运行 Edit该解决方案应该适用于 Excel 2010 和 Excel 2007 此
  • 服务 AddJsonOptions .net core 2.1

    以前使用 net 2 0 您可以通过这种方式添加 json 内容 services AddJsonOptions options gt options SerializerSettings ContractResolver new Came
  • 如何使用 Entity Framework 4.1 Fluent API 映射 Enum?

    我在 EF 的工作表之间有些迷失了 就像自由世界的其他部分一样 我确实需要在我的 POCO 中使用枚举 像我交谈过的许多人一样 我非常喜欢使用代码映射枚举 只是因为 我只是不太喜欢图片 我的困境是 我在几乎每一篇文章中都得到了相互矛盾的信息
  • 带有空项目的组合框?

    假设我们有一个数据源绑定到数据库中的集合 当然不存在空项 如何添加一个将项目无效到 ComboBox 中 这样第一次加载时用户会看到一个空字符串 我不想将虚拟 空对象添加到集合中 最好在 XAML 中 有什么建议吗
  • 有条件地忽略属性序列化

    我有一个 Asp Net WebApi 项目 我想返回 Json 格式的产品列表和一个特定产品 这是我的产品型号 public class Product public int Id get set public string ShortS
  • 如何将位写入文件?

    如何使用 c net 将位 而不是字节 写入文件 我很坚持它 Edit 我正在寻找一种不同的方法 将每 8 位写为一个字节 一次可以写入的最小数据量是一个字节 如果您需要写入单独的位值 例如 二进制格式需要 1 位标志 3 位整数和 4 位
  • ConcurrentBag 中可能存在内存泄漏吗?

    我一直在研究新的并发集合 特别是 ConcurrentBag 引起了我的注意 由于 ConcurrentBag 在每个单独的线程上内部保存一个本地集 使用它来跟踪项目 这意味着当线程本身超出范围时 ConcurrentBag 仍将在内存中引
  • .NET 中的跟踪中的“开关”和“过滤器”有什么区别?

    NET 中的跟踪中的 开关 和 过滤器 有什么区别 他们似乎以相似的方式工作
  • 为什么我的程序集在安装到 GAC 后在“添加引用 > .Net”中不可见?

    我想问一个关于 GAC 的简单问题我创建了一个程序集 Awesome DLL 对其进行签名 然后将其安装到 GAC 中 C MyApps Awesome Awesome Awesome bin Release gt sn k Awesome
  • 使用 WPF 和数据绑定将文件拖放到应用程序窗口中

    我希望能够将文件 例如从桌面或资源管理器 拖放到 WPF 应用程序的主窗口中 我也不希望有任何代码隐藏 即我想使用数据绑定 到目前为止 我测试了 gong wpf dragdrop 它似乎不支持应用程序外部的拖动目标 我可以将文件拖放到主窗
  • 如何将 dll 中包含的组件嵌入到 exe 中,以便它可以从内存运行?

    我正在尝试制作一个必须从内存运行的程序 通过Assembly Load bin 如上所述here http www codeproject com Articles 13897 Load an EXE File and Run It fro
  • 如何检查日期时间是否发生在今天?

    有没有比下面的代码更好的 net 方法来检查 今天 是否发生了 DateTime if newsStory WhenAdded Day DateTime Now Day newsStory WhenAdded Month DateTime
  • Web 和 winforms 的 .Net 身份验证

    我有一个为客户端构建的 ASP NET Web 应用程序 它使用默认的 ASP NET 表单身份验证 他们现在请求一个能够 与 Web 应用程序一起工作的桌面 WinForms 应用程序 我已经创建了 Web 服务来访问他们想要从 Web

随机推荐

  • Django CBV CreateView - 从 CreateView 重定向到最后一页

    我正在学习 Django 并且在从 CreateView 重定向回来时遇到问题 我想重定向到 BookDetail 页面 其中包含由 CreateView 创建的书籍实例列表 模型 py class BookInstance models
  • 一行写和多行写的区别

    当我在一行上写一些东西并用 分隔时有什么区别 并在两条线上 显然我不明白其中的区别 因为我认为下面的两个函数应该返回相同的结果 def fibi n a b 0 1 for i in range n a b b a b return a p
  • 如何删除特定 mysql 表字段上的唯一键

    我在用户名和电子邮件两个字段中分配了唯一的密钥 我已经执行了这个查询 ALTER TABLE goipmonl users DROP INDEX username DROP INDEX username ON goipmonl users
  • PrimeFaces DataTable 有记录时“未找到记录”

    我将 dataTable 定义为
  • 数据库表越多越好吗?

    最近 我一直在重新思考几个月前所做的数据库设计 主要原因是昨晚我读了vBulletin的数据库模式 发现他们使用了很多很多表 我当前用于模式 例如我的日志表 的 想法 是通过将日志类型与整数进行区分 将所有内容保留在一个表中 id type
  • 子进程重定向的 STDOUT 上的重叠 ReadFileEx 永远不会触发

    我有一个长期运行的基于控制台的应用程序 Sender 它使用非缓冲输出 例如 cout 我问过一个单独的问题关于做到这一点的最佳方法 我的第一次尝试是为子进程创建带有重定向 STDIN 和 STDOUT 的管道 并使用异步 ReadFile
  • 是否可以确保 constexpr 函数在编译时最多调用一次?

    正如标题所问 是否可以确保 constexpr 函数在编译时最多调用一次 如果函数不是 constepxr 这显然是不可能的 我可以编写一个每当我按下空格键时就会调用的函数 因此编译器永远无法在编译时弄清楚这一点 简短回答 没有为什么con
  • 查找裁剪后的相似图像

    2 个图像具有相同的颜色 图案等 一张图像是从另一张图像中裁剪出来的 我发现的算法主要使用位置来比较图像之间的差异 因此它会为裁剪图像产生错误的结果 如何知道这两张图片相似 Thanks 您确实需要提供更多信息 但也许您可以使用互相关算法
  • 打开 NFC 模拟器使用

    我想知道如何正确使用开放式 NFC 模拟器 我已经在以下位置浏览过类似的帖子 Open NFC 模拟器入门 但我的问题是 在遵循上面链接中的所有说明后 没有运气 有人可以给我有关如何正确加载 SDK 插件并启动模拟器的分步说明吗 我正在做一
  • Ramda 柯里化:如何将参数应用于多个参数

    我有一种情况需要这样做 const f obj gt assoc list createList obj obj 由于我需要第二个和第三个参数的参数 因此禁止我执行以下操作 const f assoc list somehowGetObj
  • Orion Context Broker 的工作效率只有一半

    我已经安装了 Orion Context Broker 0 23 0 但它的表现很少 它只能工作一半的时间 例如 当尝试检索版本时 我收到以下错误消息 curl http localhost 1026 version curl 52 Emp
  • 使用 updateDate() 方法设置 DatePicker 的日期

    我目前正在制作日期 时间选择器课程 本质上 我创建了 3 个单选按钮 明天 两天内 和 下周 我想要做的是让这些单选按钮自动将日期选择器设置为提前相应的天数 提前 1 2 和 7 天 当用户单击单选按钮时 我尝试使用 updateDate
  • Google 搜索检索搜索关键字的结果数量

    我有一个关键字列表 想知道每个关键字的谷歌搜索结果数量 对于我的研究项目 我正在使用下面的代码来实现相同的目的 def showsome searchfor hits 1 try query urllib urlencode q searc
  • $_SERVER['REMOTE_ADDR'] 的问题

    我使用 SERVER REMOTE ADDR 它返回客户端 ip 地址 用户查看当前页面的 IP 地址 但现在 和相同的代码 它返回主机 ip 地址 我用 ip 位置检查了 ip 地址 问题是主机还是什么 感谢你 您应该查询HTTP X F
  • 体积的imfilter速度

    我正在研究一种算法 该算法需要过滤 3D 矩阵 非稀疏 512 3 来查找边缘 我只想找到每个切片中的边缘 所以我一直在执行以下操作 2D loop appaoch x y ndgrid floor 3 sigma ceil 3 sigma
  • APK 签名错误:无法从密钥库读取密钥

    我正在 intellij 和 gradle 下开发 Android 应用程序 并使用以下方式生成密钥库文件 keytool genkey v keystore my release key keystore alias alias name
  • 是什么意思[重复]

    这个问题在这里已经有答案了 这是代码 def my func f arg return f arg print lambda x 2 x x 5 gt gt gt
  • 控制笔记本相关表达式的 Rasterize[] 宽度

    Update向导先生的答案给出了像素完美的结果 但它仅适用于 Windows 并且会破坏剪贴板内容 我的答案应该适用于任何平台 但不太精确 例如它省略了输入 输出标签 但它确实允许设置光栅化宽度 这个问题我当时就出现了尝试为图像上传器制作预
  • WebStorm:如何美化 JavaScript 文件中引号中的 HTML

    我的中有以下块app component ts file Component selector my app template h1 title h1 h2 My Heroes h2 ul class heroes li li ul h2
  • 打开目录对话框

    我希望用户选择一个目录 用于保存我将生成的文件 我知道在 WPF 中我应该使用OpenFileDialog来自 Win32 但不幸的是 该对话框需要选择文件 如果我只是单击 确定 而不选择文件 它就会保持打开状态 我可以通过让用户选择一个文