当前位置: 首页 > article >正文

使用ookii-dialogs-wpf在WPF选择文件夹时能输入路径

在进行WPF开发时,System.Windows.Forms.FolderBrowserDialog的选择文件夹功能不支持输入路径:

在这里插入图片描述

希望能够获得下图所示的选择文件夹功能:

在这里插入图片描述

于是,通过NuGet中安装Ookii.Dialogs.Wpf包,并创建一个简单的工具类:

https://github.com/ookii-dialogs/ookii-dialogs-wpf/tree/master/sample/Ookii.Dialogs.Wpf.Sample

using Ookii.Dialogs.Wpf;
using System.Windows.Forms;

namespace Utils
{
    public class DialogUtil
    {
        public static bool GetDir(string description, out string dir, string rootDir = null)
        {
            dir = null;
            if (VistaFolderBrowserDialog.IsVistaFolderDialogSupported)
            {
                VistaFolderBrowserDialog val = new VistaFolderBrowserDialog();
                val.Description = description;

                val.SelectedPath = rootDir;
                val.Multiselect = (false);
                if (val.ShowDialog() == true)
                {
                    dir = val.SelectedPath;
                    return true;
                }
            }
            else
            {
                FolderBrowserDialog folderBrowserDialog = new FolderBrowserDialog();
                folderBrowserDialog.Description = description;
                if (folderBrowserDialog.ShowDialog() != System.Windows.Forms.DialogResult.OK)
                    return false;
                dir = folderBrowserDialog.SelectedPath;
                return true;
            }
            return false;
        }
    }
}

调用该工具类:

if (DialogUtil.GetDir("选择文件夹", out string dir))
{
	//to do
}

http://www.kler.cn/a/386853.html

相关文章:

  • 数据库服务体系结构
  • UllnnovationHub,一个开源的WPF控件库
  • 20250118拿掉荣品pro-rk3566开发板上Android13下在uboot和kernel启动阶段的Rockchip这个LOGO标识
  • [LeetCode] 链表完整版 — 虚拟头结点 | 基本操作 | 双指针法 | 递归
  • 高效实现 Markdown 转 PDF 的跨平台指南20250117
  • 【21】Word:德国旅游业务❗
  • 「Mac畅玩鸿蒙与硬件31」UI互动应用篇8 - 自定义评分星级组件
  • Flink on YARN是如何确定TaskManager个数的
  • [spark面试]spark与mapreduce的区别---在DAG方面
  • CI_CD
  • LabVIEW气体检测系统
  • 【Android】组件化开发入门
  • java-web-苍穹外卖-day2-上:测试阶段区分+开发工具区分
  • 在CentOS 7上安装Alist
  • 【elkb】kibana后台删除索引
  • Android OpenGL ES详解——纹理:纹理过滤GL_NEAREST和GL_LINEAR的区别
  • jmeter常用配置元件介绍总结之函数助手
  • Virtual Box 安装 Deepin 系统
  • Ubuntu 修改时区 同步时间
  • lua入门教程:lua函数
  • 【嵌入式开发——Linux操作系统】8进程间通信IPC和内核同步
  • C# 中的 IntPtr
  • C++设计模式结构型模式———代理模式
  • 【计网不挂科】计算机网络期末考试——【选择题&填空题&判断题&简述题】题库(3)
  • Unity插件NodeCanvas之行为树的详细教程
  • python--案例练习:加,幂指数