方式1: 使用win32控件OpenFileDialog

  1.  
  2. Microsoft.Win32.OpenFileDialog ofd = new Microsoft.Win32.OpenFileDialog();
  3.  
  4. ofd.DefaultExt = ".xml";
  5.  
  6. ofd.Filter = "xml file|*.xml";
  7.  
  8. if (ofd.ShowDialog() == true)
  9.  
  10. {
  11.  
  12. //此处做你想做的事 ...=ofd.FileName;
  13.  
  14. }

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

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

  1. System.Windows.Forms.OpenFileDialog openFileDialog1 = new System.Windows.Forms.OpenFileDialog();
  2.  
  3. openFileDialog1.InitialDirectory = "c:\\";
  4.  
  5. openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
  6.  
  7. openFileDialog1.FilterIndex = ;
  8.  
  9. openFileDialog1.RestoreDirectory = true;
  10.  
  11. if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
  12.  
  13. {
  14.  
  15. //此处做你想做的事 ...=openFileDialog1.FileName;
  16.  
  17. }
  18.  
  19. 类似的有文件夹浏览对话框:
  20.  
  21. System.Windows.Forms.FolderBrowserDialog folderBrowserDialog = new System.Windows.Forms.FolderBrowserDialog();
  22.  
  23. System.Windows.Forms.DialogResult result = folderBrowserDialog.ShowDialog();
  24.  
  25. if (result == System.Windows.Forms.DialogResult.OK)
  26.  
  27. {
  28.  
  29. tb_FolderPath.Text = folderBrowserDialog.SelectedPath;
  30.  
  31. }

方式三: 使用win32 api

  1. BOOL WINAPI GetOpenFileName( __inout LPOPENFILENAME lpofn)

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

  1. [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
  2.  
  3. public class OpenFileName
  4.  
  5. {
  6.  
  7. public int structSize = ;
  8.  
  9. public IntPtr hwnd = IntPtr.Zero;
  10.  
  11. public IntPtr hinst = IntPtr.Zero;
  12.  
  13. public string filter = null;
  14.  
  15. public string custFilter = null;
  16.  
  17. public int custFilterMax = ;
  18.  
  19. public int filterIndex = ;
  20.  
  21. public string file = null;
  22.  
  23. public int maxFile = ;
  24.  
  25. public string fileTitle = null;
  26.  
  27. public int maxFileTitle = ;
  28.  
  29. public string initialDir = null;
  30.  
  31. public string title = null;
  32.  
  33. public int flags = ;
  34.  
  35. public short fileOffset = ;
  36.  
  37. public short fileExtMax = ;
  38.  
  39. public string defExt = null;
  40.  
  41. public int custData = ;
  42.  
  43. public IntPtr pHook = IntPtr.Zero;
  44.  
  45. public string template = null;
  46.  
  47. }
  48.  
  49. public class LibWrap
  50.  
  51. {
  52.  
  53. // Declare a managed prototype for the unmanaged function.
  54.  
  55. [DllImport("Comdlg32.dll",SetLastError=true,ThrowOnUnmappableChar=true, CharSet = CharSet.Auto)]
  56.  
  57. public static extern bool GetOpenFileName([In, Out] OpenFileName ofn);
  58.  
  59. }
  60.  
  61. 之后的工作就是实例化、初始化和方法调用了:
  62.  
  63. OpenFileName ofn = new OpenFileName();
  64.  
  65. ofn.structSize = Marshal.SizeOf(ofn);
  66.  
  67. ofn.filter = "Project files\0*.xml";
  68.  
  69. ofn.file = new string(new char[]);
  70.  
  71. ofn.maxFile = ofn.file.Length;
  72.  
  73. ofn.fileTitle = new string(new char[]);
  74.  
  75. ofn.maxFileTitle = ofn.fileTitle.Length;
  76.  
  77. ofn.initialDir = "C:\\";
  78.  
  79. ofn.title = "Open Project";
  80.  
  81. ofn.defExt = "xml";
  82.  
  83. ofn.structSize = Marshal.SizeOf(ofn);
  84.  
  85. if (LibWrap.GetOpenFileName(ofn))
  86.  
  87. {
  88.  
  89. //此处做你想做的事 ...=ofn.file;
  90.  
  91. }

WPFの操作文件浏览框几种方式的更多相关文章

  1. 文件对话框WPF(5)----文件浏览对话框

    废话就不多说了,开始... WPF中文件浏览对话框的实现可以利用Windows API Code Pack,它是一个用于访问Windows Vista/7 特性的托管代码函数库,但并没有包含在.NET ...

  2. Linux经常使用的文件传输的几种方式

    Linux经常使用的文件传输的几种方式 1.终端新建stfp协议连接 或者命令方式: sftp -P22 root@192.168.11.100 端口可以不用填写,默认是22,端口的P是大写. 将本地 ...

  3. Django文件上传三种方式以及简单预览功能

    主要内容: 一.文件长传的三种方式 二.简单预览功能实现 一.form表单上传 1.页面代码 <!DOCTYPE html> <html lang="en"> ...

  4. 转载:删除github上文件夹的两种方式

    http://www.jianshu.com/p/286be61bb9b8 删除github上文件夹的两种方式(解决已经加入ignore的文件夹无法从远程仓库删除的问题) 如果此文件夹已被加入git追 ...

  5. PHP读取文件内容的五种方式(转载)

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

  6. python学习之文件读写入门(文件读的几种方式比较)

    1.文件读写简单实例:(以w写的方式打开一个文件,以r读一个文件) # Author : xiajinqi # 文件读写的几种方式 # 文件读写 f = open("D://test.txt ...

  7. Java实现文件复制的四种方式

    背景:有很多的Java初学者对于文件复制的操作总是搞不懂,下面我将用4中方式实现指定文件的复制. 实现方式一:使用FileInputStream/FileOutputStream字节流进行文件的复制操 ...

  8. java文件读写的两种方式

    今天搞了下java文件的读写,自己也总结了一下,但是不全,只有两种方式,先直接看代码: public static void main(String[] args) throws IOExceptio ...

  9. 办公室的远程传文件 的命令三种方式linux

    不同的Linux之间copy文件常用有3种方法: 第一种就是ftp,也就是其中一台Linux安装ftp Server,这样可以另外一台使用ftp的client程序来进行文件的copy. 第二种方法就是 ...

随机推荐

  1. JavaWeb学习(二十三)———Filter(过滤器)

    一.Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态 ...

  2. JavaScript 深入之从原型到原型链

    1 .构造函数创建对象 我们先使用构造函数创建一个对象: function Person(){ } var p = new Person(); p.name = 'ccy'; console.log( ...

  3. MONGODB(四)——DBObject与JavaBean转换

    一.DBObject 转为 JavaBean /** * 将实体Bean对象转换成DBObject * */ public static <T> DBObject beanToDBObje ...

  4. unsafe关键字

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.L ...

  5. [android] 调用系统照相机和摄像机

    查看系统照相机源码,找到清单文件查看 查看意图过滤器,action是android.media.action.IMAGE_CAPTURE category是android.intent.categor ...

  6. CSS中你知道的display的值有多少?用了多少?

    它的语法如下: display:none | inline | block | list-item | inline-block | table | inline-table | table-capt ...

  7. [笔记] imooc《JavaScript深入浅出》对象与函数

    懒得做草稿了,习惯md也懒得扔印象笔记 主要是之前没去接触这一部分,就随手记下来了 创建对象的方法 对象字面量 new构造器/原型链 Object.create() 属性操作 属性读写(以及读写异常. ...

  8. 【读书笔记】iOS-iOS的UI自动化测试

    1,Instruments iOS自带的自动化测试工具. 2,TuneupJs  最早的iOS自动化测试工具 https://github.com/alexvollmer/tuneup_js 3,yn ...

  9. Windows下更新 npm 和 nodejs

    一.更新npm // 将npm更新到最新版本 npm install npm@latest -g 二.更新nodejs 1. 首先通过 where node 命令找到nodejs的安装路径 2. 然后 ...

  10. 英文技术Podcast推荐 - 英语技术一起学

    Podcast(播客)是现在比较流行的音.视频RSS订阅媒体.跟大家分享一下我所关注的一些不错的英文技术podcast,大家感兴趣可以订阅,在关注国外最前沿的技术资讯的同时更加锻炼英文听力(有很多需要 ...