WPF如何使用 System.Windows.Forms.FolderBrowserDialog

WPF如何使用 System.Windows.Forms.FolderBrowserDialog


在WPF中,如果你想使用System.Windows.Forms.FolderBrowserDialog来选择文件夹,你需要添加对WinForms的引用,因为FolderBrowserDialog是Windows Forms的一部分,不是WPF的一部分。

下面是如何在WPF应用程序中使用FolderBrowserDialog的步骤:

  1. 添加引用:
    在你的项目中,添加对System.Windows.Forms的引用。在Visual Studio中,可以通过解决方案资源管理器的“引用”部分来添加。

  2. 添加WinForms的命名空间:
    在C#代码文件的顶部,添加对System.Windows.Forms的命名空间引用。

    using System.Windows.Forms;
    
  3. 调用FolderBrowserDialog
    在你的WPF窗口代码中,你可以创建和使用FolderBrowserDialog的实例。

    private void OpenFolderBrowserDialog()
    {// 需要添加对System.Windows.Forms的引用var folderBrowserDialog = new FolderBrowserDialog();DialogResult result = folderBrowserDialog.ShowDialog();if (result == System.Windows.Forms.DialogResult.OK && !string.IsNullOrWhiteSpace(folderBrowserDialog.SelectedPath)){string selectedPath = folderBrowserDialog.SelectedPath;// 使用选定的路径做你需要的事}folderBrowserDialog.Dispose();
    }
    
  4. 设置FolderBrowserDialog的属性:
    根据需要,你可以设置FolderBrowserDialog的属性,比如Description来显示对话框上方的描述文字,或者SelectedPath来设置或获取选定的路径。

  5. 调用对话框:
    在你的事件处理器或命令中调用OpenFolderBrowserDialog方法,这会打开文件夹浏览对话框。

请注意,由于FolderBrowserDialog是Windows Forms的组件,使用它需要WinForms上下文。当在WPF中使用时,ShowDialog方法需要一个WinForms窗口句柄。如果你直接调用它而不传递窗口句柄,它将默认使用当前激活的窗口作为它的所有者。

在.NET Core或.NET 5/6/7+的WPF应用程序中,可能还需要添加对System.Windows.Forms.Primitives的引用,因为某些Windows Forms控件被移到了这个程序集中。可以通过项目文件中的PackageReference来添加。

如果你在.NET Core或.NET 5/6/7+应用程序中遇到兼容性问题,考虑使用WPF自带的Microsoft.Win32.OpenFileDialogSystem.Windows.Controls.OpenFileDialog,它们有类似的功能并且专为WPF设计。虽然它们默认用于打开文件,但你也可以通过一些技巧使用它们来选择文件夹。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/785677.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大模型中 .safetensors 文件、.ckpt文件、.gguf和.pth以及.bin文件区别、加载和保存以及转换方式

在大模型中,.safetensors、.ckpt、.gguf、.pth 和 .bin 文件都是用于保存和加载模型参数的文件格式,它们之间的区别和转换方式如下: .safetensors 文件: 这是 TensorFlow 2.x 中新增的文件格式,用于保存模型参数和优化…

CentOS运行Py脚本报错illegal instruction故障处理

测试Python脚本运行环境及依赖 [root@localhost network]# python3 devops_ping_test1.py Illegal instruction ①、illegal instruction报错 由于本人第一次测试时运行是正常的,但是在测试过程中多次修改、覆盖代码运行后提示Illegal instruction(非法指令),所以不能单…

Java封装最佳实践:打造高内聚、低耦合的优雅代码~

​ 个人主页:秋风起,再归来~ 文章专栏:javaSE的修炼之路 个人格言:悟已往之不谏,知来者犹可追 克心守己,律己则安! 1、封装 1.1 封装的概念 面向对象程序三大…

文献学习-24-用于少发罕见病诊断的动态特征拼接

Dynamic feature splicing for few-shot rare disease diagnosis Authors: Yuanyuan Chen, Xiaoqing Guo , Yongsheng Pan , Yong Xia , Yixuan Yuan Source: Medical Image Analysis 90 (2023) 102959 Keywords: 少样本学习 罕见病诊断 transformer 特征拼接 通道相似度 Ab…

ARM_02-光控灯

1.总结串口的发送和接收功能使用到的函数 发送函数: HAL_StatusTypeDef //是否成功发送数据 HAL_UART_Transmit( UART_HandleTypeDef *huart,//指定哪个串口 const uint8_t *pData,//要发送的数据 uint16_t Size,//要发送的数据长度,用sizeof的话要…

FreeRTOS 任务挂起和恢复API函数

FreeRTOS 任务挂起和恢复API函数使用 挂起的作用就是当我们需要暂停某任务时候,等过一段时间在运行,这个时候要是使用删除和重建的方法就会当时任务进行时候的变量保存的值。当需要将这个任务停止运行一段时间的将这个任务挂起,当重新进行运…

华为云亮相KubeCon EU 2024,以持续开源创新开启智能时代

3月21日,在巴黎举办的云原生顶级峰会KubeCon EU 2024上 ,华为云首席架构师顾炯炯在“Cloud Native x AI:以持续开源创新开启智能时代”的主题演讲中指出,云原生和AI技术的融合,是推动产业深刻变革的关键所在。华为云将…

进度管理与成本管理

1.裁剪考虑因素 2. 定义计划是把WBS分解的活动在分解成更小的活动。 3. 4.资源平衡会改变关键路径 5.资源平滑只能在自由和浮动时间延迟 6. 7. 8.成本管理,论文要写不足与解决过程 9.成本的类型 10. 11.规划XX管理的时候,输入一般有章程和项目…

C语言动态内存讲解+通讯录2.0

文章目录 前文malloc和freecallocrealloc枚举常量的简单说明及使用 通讯录2.0动态开辟通讯录,满了就扩容保存数据和载入数据 通讯录2.0演示推荐好用的软件 前文 本文主要介绍动态开辟的几个函数,以及改进之前的通讯录。 我们局部变量等是在栈区上开辟空间的,而我们动态开辟的空…

HTML——1.简介、基础、元素

一、简介 HTML(HyperText Markup Language)是一种用于创建网页的标记语言。它使用标记(tag)来描述网页的结构和内容。HTML被用于定义网页中的文本、图像、链接、多媒体以及其他元素的排列和呈现方式。 HTML文档是由一系列的HTML…

新model开发记录

模型使用 -- 用blender导出为 fbx ,修改渲染方式(点击模型->Materials->Extract Materials(将材质从fbx中 单独提取出来了)->Materials 选择 Shader -> SimpleURPToonLitExample 点开脸的材质,勾选第一条) 解决角色…

力扣-python-故障键盘

题解: from collections import dequeclass Solution:def finalString(self, s: str) -> str:# 创建一个双端队列用于存储字符q deque()# 定义一个标志位,用于标记当前字符应该添加到队列的哪一端head False# 遍历输入的字符串s的每一个字符for ch…

Linux word转pdf汉字没有乱码,但是dataMap.put(“userTrainedOper1“, “\u2611“);填充单选框时乱码

原来的,只支持汉字,不支持Unicode package com.gangwantech.web.utils;import com.aspose.words.*; import net.coobird.thumbnailator.Thumbnails;import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.ByteArrayInput…

C++刷题篇——05静态扫描

一、题目 二、解题思路 注意:注意理解题目,缓存的前提是先扫描一次 1、使用两个map,两个map的key相同,map1:key为文件标识,value为文件出现的次数;map2:key为文件标识,va…

【代码随想录】【动态规划】day39:不同路径

不同路径1 # 机器人从(0,0)出发,到达(m-1,n-1)终点 一共有几种路径# 确定初始数组:dp二维数组 m行n列 表示到m行n列有几种路径dp[[0] * n for _ in range(m)]dp[0][0]1for i in range(m):dp[i][0]1for j in range(n):dp[0][j]1# dp[1][1]2for i in range(1,m):for…

CTF wed安全(攻防世界)练习题

一、Training-WWW-Robots 进入网站如图: 翻译:在这个小小的挑战训练中,你将学习Robots exclusion standard。网络爬虫使用robots.txt文件来检查它们是否被允许抓取和索引您的网站或只是其中的一部分。 有时这些文件会暴露目录结构&#xff0c…

【数据结构】优先级队列——堆

🧧🧧🧧🧧🧧个人主页🎈🎈🎈🎈🎈 🧧🧧🧧🧧🧧数据结构专栏🎈🎈🎈&…

C++11:右值引用

C11:右值引用 右值与左值右值引用语法右值引用底层移动语义引用折叠完美转发 传统的C语法中就有引用的语法,而C11中新增了的右值引用语法特性,所以从现在开始我们之前学习的引用就叫做左值引用。无论左值引用还是右值引用,都是给对…

VR全景赋能智慧农业,打造沉浸式种植体验平台

随着人口的增长,传统农业也正在面临着不一样的挑战,加上很多人对农业的固有印象,很少有年轻人愿意下到农田里,那么该如何提高产量、降低成本以及引导年轻人深刻感受现代农业成为了急需解决的问题。 随着城市化脚步的推进&#xff…

JavaScript作用域详解

作用域可分为词法作用域和动态作用域,JavaScript 使用词法作用域,也称为静态作用域。 词法作用域是指变量的作用域在代码写好的时候就确定了,而不是在运行时确定。函数在定义的时候就决定了其作用域,而不是在调用的时候。 JavaScr…