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 = ;
- 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 = ;
- public IntPtr hwnd = IntPtr.Zero;
- public IntPtr hinst = IntPtr.Zero;
- public string filter = null;
- public string custFilter = null;
- public int custFilterMax = ;
- public int filterIndex = ;
- public string file = null;
- public int maxFile = ;
- public string fileTitle = null;
- public int maxFileTitle = ;
- public string initialDir = null;
- public string title = null;
- public int flags = ;
- public short fileOffset = ;
- public short fileExtMax = ;
- public string defExt = null;
- public int custData = ;
- 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);
- }
- 之后的工作就是实例化、初始化和方法调用了:
- OpenFileName ofn = new OpenFileName();
- ofn.structSize = Marshal.SizeOf(ofn);
- ofn.filter = "Project files\0*.xml";
- ofn.file = new string(new char[]);
- ofn.maxFile = ofn.file.Length;
- ofn.fileTitle = new string(new char[]);
- 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;
- }
WPFの操作文件浏览框几种方式的更多相关文章
- 文件对话框WPF(5)----文件浏览对话框
废话就不多说了,开始... WPF中文件浏览对话框的实现可以利用Windows API Code Pack,它是一个用于访问Windows Vista/7 特性的托管代码函数库,但并没有包含在.NET ...
- Linux经常使用的文件传输的几种方式
Linux经常使用的文件传输的几种方式 1.终端新建stfp协议连接 或者命令方式: sftp -P22 root@192.168.11.100 端口可以不用填写,默认是22,端口的P是大写. 将本地 ...
- Django文件上传三种方式以及简单预览功能
主要内容: 一.文件长传的三种方式 二.简单预览功能实现 一.form表单上传 1.页面代码 <!DOCTYPE html> <html lang="en"> ...
- 转载:删除github上文件夹的两种方式
http://www.jianshu.com/p/286be61bb9b8 删除github上文件夹的两种方式(解决已经加入ignore的文件夹无法从远程仓库删除的问题) 如果此文件夹已被加入git追 ...
- PHP读取文件内容的五种方式(转载)
php读取文件内容的五种方式 分享下php读取文件内容的五种方法:好吧,写完后发现文件全部没有关闭.实际应用当中,请注意关闭 fclose($fp); php读取文件内容: -----第一种方法--- ...
- python学习之文件读写入门(文件读的几种方式比较)
1.文件读写简单实例:(以w写的方式打开一个文件,以r读一个文件) # Author : xiajinqi # 文件读写的几种方式 # 文件读写 f = open("D://test.txt ...
- Java实现文件复制的四种方式
背景:有很多的Java初学者对于文件复制的操作总是搞不懂,下面我将用4中方式实现指定文件的复制. 实现方式一:使用FileInputStream/FileOutputStream字节流进行文件的复制操 ...
- java文件读写的两种方式
今天搞了下java文件的读写,自己也总结了一下,但是不全,只有两种方式,先直接看代码: public static void main(String[] args) throws IOExceptio ...
- 办公室的远程传文件 的命令三种方式linux
不同的Linux之间copy文件常用有3种方法: 第一种就是ftp,也就是其中一台Linux安装ftp Server,这样可以另外一台使用ftp的client程序来进行文件的copy. 第二种方法就是 ...
随机推荐
- JavaWeb学习(二十三)———Filter(过滤器)
一.Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态 ...
- JavaScript 深入之从原型到原型链
1 .构造函数创建对象 我们先使用构造函数创建一个对象: function Person(){ } var p = new Person(); p.name = 'ccy'; console.log( ...
- MONGODB(四)——DBObject与JavaBean转换
一.DBObject 转为 JavaBean /** * 将实体Bean对象转换成DBObject * */ public static <T> DBObject beanToDBObje ...
- unsafe关键字
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.L ...
- [android] 调用系统照相机和摄像机
查看系统照相机源码,找到清单文件查看 查看意图过滤器,action是android.media.action.IMAGE_CAPTURE category是android.intent.categor ...
- CSS中你知道的display的值有多少?用了多少?
它的语法如下: display:none | inline | block | list-item | inline-block | table | inline-table | table-capt ...
- [笔记] imooc《JavaScript深入浅出》对象与函数
懒得做草稿了,习惯md也懒得扔印象笔记 主要是之前没去接触这一部分,就随手记下来了 创建对象的方法 对象字面量 new构造器/原型链 Object.create() 属性操作 属性读写(以及读写异常. ...
- 【读书笔记】iOS-iOS的UI自动化测试
1,Instruments iOS自带的自动化测试工具. 2,TuneupJs 最早的iOS自动化测试工具 https://github.com/alexvollmer/tuneup_js 3,yn ...
- Windows下更新 npm 和 nodejs
一.更新npm // 将npm更新到最新版本 npm install npm@latest -g 二.更新nodejs 1. 首先通过 where node 命令找到nodejs的安装路径 2. 然后 ...
- 英文技术Podcast推荐 - 英语技术一起学
Podcast(播客)是现在比较流行的音.视频RSS订阅媒体.跟大家分享一下我所关注的一些不错的英文技术podcast,大家感兴趣可以订阅,在关注国外最前沿的技术资讯的同时更加锻炼英文听力(有很多需要 ...