WPFの操作文件浏览框几种方式
原文:WPFの操作文件浏览框几种方式

方式1: 使用win32控件OpenFileDialog

 Microsoft.Win32.OpenFileDialog ofd = new Microsoft.Win32.OpenFileDialog(); ofd.DefaultExt = ".xml"; ofd.Filter = "xml file|*.xml"; if (ofd.ShowDialog() == true) { //此处做你想做的事 ...=ofd.FileName; 

} 

方式2: 使用Forms中的OpenFileDialog控件

WPF中是不能直接使用Forms中的控件的,否则会提示找不到Forms名字控件. 如果你仍然要用, 答案便是添加.net 引用reference

System.Windows.Forms.OpenFileDialog openFileDialog1 = new System.Windows.Forms.OpenFileDialog(); openFileDialog1.InitialDirectory = "c:\\"; openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"; openFileDialog1.FilterIndex = 2; openFileDialog1.RestoreDirectory = true; if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK) { //此处做你想做的事 ...=openFileDialog1.FileName; 

}类似的有文件夹浏览对话框:

System.Windows.Forms.FolderBrowserDialog folderBrowserDialog = new System.Windows.Forms.FolderBrowserDialog(); System.Windows.Forms.DialogResult result = folderBrowserDialog.ShowDialog(); if (result == System.Windows.Forms.DialogResult.OK) { tb_FolderPath.Text = folderBrowserDialog.SelectedPath; } 

方式三: 使用win32 api

BOOL WINAPI GetOpenFileName(  __inout  LPOPENFILENAME lpofn)

使用这种方式, 你需要自己实现LPOPENFILENAME结构和对GetOpenFileName方法就行封装:

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] public class OpenFileName { public int structSize = 0; public IntPtr hwnd = IntPtr.Zero; public IntPtr hinst = IntPtr.Zero; public string filter = null; public string custFilter = null; public int custFilterMax = 0; public int filterIndex = 0; public string file = null; public int maxFile = 0; public string fileTitle = null; public int maxFileTitle = 0; public string initialDir = null; public string title = null; public int flags = 0; public short fileOffset = 0; public short fileExtMax = 0; public string defExt = null; public int custData = 0; public IntPtr pHook = IntPtr.Zero; public string template = null; } public class LibWrap { // Declare a managed prototype for the unmanaged function.
[DllImport("Comdlg32.dll",SetLastError=true,ThrowOnUnmappableChar=true, CharSet = CharSet.Auto)] public static extern bool GetOpenFileName([In, Out] OpenFileName ofn); }之后的工作就是实例化、初始化和方法调用了:123456789101112131415OpenFileName ofn = new OpenFileName(); ofn.structSize = Marshal.SizeOf(ofn); ofn.filter = "Project files\0*.xml"; ofn.file = new string(new char[256]); ofn.maxFile = ofn.file.Length; ofn.fileTitle = new string(new char[64]); ofn.maxFileTitle = ofn.fileTitle.Length; ofn.initialDir = "C:\\"; ofn.title = "Open Project"; ofn.defExt = "xml"; ofn.structSize = Marshal.SizeOf(ofn); if (LibWrap.GetOpenFileName(ofn)) { //此处做你想做的事 ...=ofn.file; 

} 

posted on 2018-11-11 13:08 NET未来之路 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/lonelyxmas/p/9941817.html

WPFの操作文件浏览框几种方式相关推荐

  1. linux两种方式改变文件权限,Linux更改文件权限的两种方式

    今天小编要跟大家分享一篇关于Linux更改文件权限的方式,喜欢Linux的小伙伴来看一看吧. 我们知道·Linux系统最主要的特点之一就是--Linux系统是多用户.多任务的操作系统. 何为多用户?就 ...

  2. sass文件编译的三种方式【舒】

    [舒:]sass文件编译的三种方式 方式一: 1.webstorm打开evtGulp项目或者mcake-activity项目 2.中,开启gulp->default/develop,启动watc ...

  3. java直接调用复制文件,java中文件复制的4种方式,java文件的复制

    java中文件复制的4种方式,java文件的复制 今天一个同事问我文件复制的问题,他一个100M的文件复制的指定目录下竟然成了1G多,吓我一跳,后来看了他的代码发现是自己通过字节流复制的,定义的字节数 ...

  4. C++ 创建文件夹的四种方式

    在开头不得不吐槽一下,我要的是简单明了的创建文件夹的方式,看得那些文章给的都是复杂吧唧的一大坨代码,不仔细看鬼知道写的是啥.因此,为了方便以后自己阅读,这里自己写一下 C++ 创建文件夹的四种方式: ...

  5. php怎么读取txt文件_PHP读取文件内容的五种方式

    php读取文件内容的五种方式 分享下php读取文件内容的五种方法:好吧,写完后发现文件全部没有关闭.实际应用当中,请注意关闭 fclose($fp); -- php读取文件内容: -----第一种方法 ...

  6. 用python打开文件夹的三种方式

    用python打开文件夹的三种方式 一.利用explorer.exe import os# 利用explorer.exe执行 start_directory = r'C:\代码\软件包' os.sys ...

  7. cmd批量创建文件夹的几种方式

    cmd批量创建文件夹 //cmd批量创建文件夹的几种方式//1.空格隔开 md 1月 2月 3月 4月 5月 6月 pause//2.分号隔开 md 1月;2月;3月;4月;5月;6月 pause// ...

  8. SpingBoot yml语法及测试总结yml文件常用的五种方式

    yml语法及测试总结yml文件常用的五种方式 引言 项目介绍 初始化SpringBoot项目 application.properties介绍 yml配置文件基本语法 实际操作测试 引言 今天在开发过 ...

  9. 两台Linux主机之间文件传输的几种方式

    Linux文件传输的五种方式 FTP : FTP是文件服务器,可实现文件的上传下载,存储等功能,但本文不打算介绍ftp的使用. scp: scp能够将不同主机的文件进行相互传输,使用简单方便. rz ...

最新文章

  1. 群雄逐鹿,谁会赢得自动驾驶之战?
  2. 第十四周项目二-两个成员的类模版(2)
  3. Google因数据泄露关闭Google+消费者版本
  4. linux共享文件可读写,在Ubuntu中设置samba共享可读写文件夹
  5. Proxy SwitchyOmega 使用黑名单和白名单
  6. 2020年javaWeb面试题(初)
  7. STM32旋转立方体
  8. MTK6577+Android启动----pre-loader
  9. 使用imagex将多个swm文件整合到一个wim文件中
  10. 计算机网络基础之运输层
  11. juju部署,本地源搭建
  12. 发生线下地推风波,水滴筹冤吗?
  13. 3个月前被裁员了,心情跌落谷底,直到学姐给了我这份面试文档…
  14. 字符串全排列与组合算法以及八皇后问题
  15. uni-app入门并使用学习
  16. 大型智慧校园系统源码 智慧班牌 智慧安防 家校互联 智慧校园小程序源码
  17. ​ACL 2023 | 用二分类解决无监督常识问答
  18. init自定义python_Python自定义Module中__init__.py文件介绍
  19. 自己知道自己的认知比较浅薄
  20. 2022-2028全球汽车发电机用滑环行业调研及趋势分析报告

热门文章

  1. 利用cookie模拟登陆知乎
  2. How to make a difference
  3. android之seekbar
  4. struts2与struts1整合,java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
  5. Gridview中实现求和统计功能
  6. java=====Striing date 转化
  7. 谈一谈自己对依赖、关联、聚合和组合之间区别的理解
  8. VS2008编译boost库
  9. LeetCode--palindrome-number回文数
  10. TortoiseSVN使用帮助和下载