在WebForm中提供了FileUpload控件来供我们选择本地文件,只要我们将该控件拖到页面上了,就已经有了选择本地文件的功能了。而在WinForm中,并没有为我们提供集成该功能的控件,但为我们提供了OpenFileDialog类,我们可以利用该类来打开与选择本地文件。

OpenFileDialog类,提供了提示用户打开文件的功能,它有如下属性和方法:

属性:
CheckFileExists--设置对话框在用户指定的文件名不存在时是否显示警告
Multiselect--设置是否允许用户同时选择多个文件
ReadOnlyChecked--获取或设置一个值,该值指示是否选定只读复选框
SafeFileName--获取对话框中所选文件的文件名和扩展名。文件名不包含路径
SafeFileNames--获取对话框中所有选定文件的文件名和扩展名的数组。文件名不包含路径
ShowReadOnly--获取或设置一个值,该值指示对话框是否包含只读复选框

方法:
OpenFile()--返回用户所选定的只读文件的 System.IO.Stream
Reset()--将所有属性重新设置为其默认值

下面我们看一个提供用户选择文件的示例:
一,拖拉一个Button按钮到WinForm窗体
二,双击该Button,vs会自动为该按钮添加单击事件并跳转到该事件中,在该事件中添加以下代码:

private void button10_Click(object sender, EventArgs e)
{
//初始化一个OpenFileDialog类
OpenFileDialog fileDialog = new OpenFileDialog();

//判断用户是否正确的选择了文件
if (fileDialog.ShowDialog() == DialogResult.OK)
{
//获取用户选择文件的后缀名
string extension = Path.GetExtension(fileDialog.FileName);
//声明允许的后缀名
string[] str = new string[] { ".gif", ".jpge", ".jpg" };
if (!str.Contains(extension))
{
MessageBox.Show("仅能上传gif,jpge,jpg格式的图片!");
}
else
{
//获取用户选择的文件,并判断文件大小不能超过20K,fileInfo.Length是以字节为单位的
FileInfo fileInfo = new FileInfo(fileDialog.FileName);
if (fileInfo.Length  > 20480)
{
MessageBox.Show("上传的图片不能大于20K");
}
else
{
//在这里就可以写获取到正确文件后的代码了
}
}
}
}

如果我们要为弹出的选择框中过滤文件类型,可以设置OpenFileDialog的Filter属性。比如我们只允许用户选择.xls文件,可以作如下设置:

fileDialog.Filter = "(*.xls)|*.xls";

---------------------------------------------------------------------------------------------------------------

C#中OpenFileDialog的使用 
分类: C#2011-11-07 17:26890人阅读评论(0)收藏举报 
转自:http://63542424.blog.163.com/blog/static/18883900201101963536504/ string resultFile = "";  
 OpenFileDialog openFileDialog1 = new OpenFileDialog();  openFileDialog1.InitialDirectory = "D:\\Patch"; 
 openFileDialog1.Filter = "All files (*.*)|*.*|txt files (*.txt)|*.txt";  openFileDialog1.FilterIndex = 2; 
 openFileDialog1.RestoreDirectory = true; 
 if (openFileDialog1.ShowDialog() == DialogResult.OK)  resultFile = openFileDialog1.FileName; resultFile 就能得到你选中文件的路径 
 怎样设置OpenFileDialog组件的Filter,使实现一次过滤出多种扩展名的文件?? dlg.Filter = "Image Files(*.BMP;*.JPG;*.GIF)|*.BMP;*.JPG;*.GIF|All files (*.*)|*.* " 转自:http://www.cnblogs.com/HF06995000/archive/2011/2/22.html 一、打开文件对话框(OpenFileDialog) 1、 OpenFileDialog控件有以下基本属性 InitialDirectory 对话框的初始目录 
Filter 要在对话框中显示的文件筛选器,例如,"文本文件(*.txt)|*.txt|所有文件(*.*)||*.*" FilterIndex 在对话框中选择的文件筛选器的索引,如果选第一项就设为1 RestoreDirectory 控制对话框在关闭之前是否恢复当前目录 FileName 第一个在对话框中显示的文件或最后一个选取的文件 Title 将显示在对话框标题栏中的字符 
AddExtension 是否自动添加默认扩展名 
CheckPathExists 在对话框返回之前,检查指定路径是否存在 DefaultExt 默认扩展名 
DereferenceLinks 在从对话框返回前是否取消引用快捷方式 
ShowHelp 启用"帮助"按钮 
ValiDateNames 控制对话框检查文件名中是否不含有无效的字符或序列 2、 OpenFileDialog控件有以下常用事件 
FileOk 当用户点击"打开"或"保存"按钮时要处理的事件 HelpRequest 当用户点击"帮助"按钮时要处理的事件 
可以用以下代码来实现上面这个对话框: 
private void openFileDialogBTN_Click(object sender, System.EventArgs e){ OpenFileDialog openFileDialog=new OpenFileDialog(); 
openFileDialog.InitialDirectory="c:\\";//注意这里写路径时要用c:\\而不是c:\ openFileDialog.Filter="文本文件|*.*|C#文件|*.cs|所有文件|*.*"; openFileDialog.RestoreDirectory=true; openFileDialog.FilterIndex=1; 
if (openFileDialog.ShowDialog()==DialogResult.OK) {

fName=openFileDialog.FileName; File fileOpen=new File(fName); isFileHaveName=true; 
richTextBox1.Text=fileOpen.ReadFile(); richTextBox1.AppendText(""); } } 
路径的返回用filename是字符串类型 如:openFileDialog1.ShowDialog();  _name1= openFileDialog1.FileName;  Image imge = Image.FromFile(_name1); 3、 获取对话框的文件名 
openfiledialog.FileName //获取或设置一个包含在文件对话框中选定的文件名字符串openfiledialog.SafeFileName //获取选定对话框中的文件名和扩展名 4、例子:   
OpenFileDialog Open1 = new OpenFileDialog();  
Open1.Filter = "图片文件(*.jpg,*.gif,*.bmp)|*.jpg|*.gif|*.bmp";  说明: 
‘|’分割的两个,一个是注释,一个是真的Filter,显示出来的是那个注释。你实际上应该选出了jpg和bmp。 
如果要一次显示多中类型的文件,用分号分开 
Open1.Filter="图片文件(*.jpg,*.gif,*.bmp)|*.jpg;*.gif;*.bmp";

C# openfiledialog对文本框的操作//C#中OpenFileDialog的使用的更多相关文章

  1. Java + selenium 元素定位(6)之iframe切换(即对富文本框的操作)

    在元素定位中,对富文本框的元素定位是特别的,当我们使用普通的元素定位方法对富文本框进行操作时,我们会发现不管我们之前介绍的八种方法中的任何方法,我们都不能成功定位到富文本框,并对其进行操作.那是因为富 ...

  2. C#-WinForm-如何获取文本框(TextBox)中鼠标,光标位置

    文本框(TextBox)中的鼠标位置和光标位置是两个不同的概念,鼠标位置是要点击鼠标后(NouseDown)获取到,而光标位置却是实时就要获取到,也就是用户输入一个字符(KeyUp),这个位置就要改变 ...

  3. 【CSS】隐藏多行文本框Textarea在IE中的垂直滚动栏

    在<[CSS]禁止Google浏览器同意定义调整多行文本框>(点击打开链接)中已经提及过怎样使多行文本框Textarea在一些DOM2的浏览器中固定下来. 这不,多行文本框Textarea ...

  4. 对pdf 表单域 或文本框的操作---动态填充PDF 文件内容

    前提:需要pdf模板:并且模板内容以pdf 文本框的形式填写 package com.test;import java.io.File;import java.io.FileOutputStream; ...

  5. Word中将文本框、图形对象中的文本边距调整

    在进行word的实际使用中,如下图制作流程图时,常常发现文字在图形对象中,老是显示不全,而且上部却空出很多距离.此时可以通过设置形状格式--文本框 --- 上.下编辑进行设置. 可以完美解决文本框中文 ...

  6. 【PyQt5-Qt Designer】文本框读写操作

    主要内容: 1.读.写 输入控件(Input Widgets)中的内容(str) 2.保存数据到txt文件 3.从txt文件中读内容,与输入控件中内容比较 将上述各种输入控件(Input Widget ...

  7. C# 操作 INI 自己工作笔记(对文本框的操作)

    using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using Sy ...

  8. select下拉框相关操作(更新中。。。)

    背景 记录一些关于html标签的操作,基本上都是jquery操作 select下拉框 根据value查找对应option,然后执行选中操作 $("#selectId").find( ...

  9. (9)Microsoft office Word 2013版本操作入门_文本框_word排版

    1.插入文本框 :[插入]---[文本框]可以自己画,也可以选择已有的模板 2.文本框设置 :点中文本框选择[格式]---[对齐文本]可以让文字上下居中,[形状填充]填充不同的颜色.[形状轮廓]可以改 ...

随机推荐

  1. LAMP配置课程基础知识详解

    听了一天的课程,我本人对这个还是很感兴趣的. [root@localhost~]#     root 用户名 localhost 本地 ~  家目录 不同用户不同 #当前用户是管理员 $当前用户是普通 ...

  2. 调用.NET Serviced Component引发的性能问题及其解决

    在企业用户环境里,.NET Serviced Component使用广泛.它比较好的把传统COM+封装和.NET应用逻辑衔接了起来,在服务器端应用起到重要作用..NET Serviced Compon ...

  3. Python语言之函数

    1.函数的定义与调用 def function(x): print("function(%s)"%x) function("hello") #call the ...

  4. linux下vim命令汇总

    一. 进入vi的命令 vi filename : 打开或新建文件,并将光标置于第一行首 vi +n filename : 打开文件,并将光标置于第n行首 vi + filename : 打开文件,并将 ...

  5. Escaping Closures 两点:本质是生命周期标示符

    1.block需要(拷贝)保存: 2.block引用的环境变量需要处理. 相当于oc中的copy block. Escaping Closures A closure is said to escap ...

  6. 深入理解Three.js(WebGL)贴图(纹理映射)和UV映射

    本文将详细描述如何使用Three.js给3D对象添加贴图(Texture Map,也译作纹理映射,“贴图”的翻译要更直观,而“纹理映射”更准确.).为了能够查看在线演示效果,你需要有一个兼容WebGL ...

  7. 一步一步教你用IntelliJ IDEA 搭建SSM框架(2)——配置mybatis-geneator

    我们要搭建整个SSM框架,所以要继续上篇文章没有完成的工作,下面配置mybatis-geneator,自动生成mybatis代码. 在上篇文章中的pom.xml的配置文件中已经加了mybatis-ge ...

  8. copy.c实现

    #cat copy.c #include <stdio.h> #include <stdlib.h> #include <string.h> int copyFil ...

  9. STL源码分析之内存池

    前言 上一节只分析了第二级配置器是由多个链表来存放相同内存大小, 当没有空间的时候就向内存池索取就行了, 却没有具体分析内存池是怎么保存空间的, 是不是内存池真的有用不完的内存, 本节我们就具体来分析 ...

  10. 第一节:初识pandas之Series(上)

    Series线性的数据结构, 也是一个一维数组. 声明:本人Python小白,以下代码只是个人学习的过程,仅仅记录一下学习的点点滴滴,若有错误,还望指正. (注:该代码均在jupyter notebo ...