C# OpenFileDialog对话框的用法(附带实例)
文件编辑程序一般都有打开文件对话框,在这个对话框用户中可以选择文件并打开,工具箱也提供打开文件对话框功能让我们可以很方便地使用对话框来打开文件。
在工具箱内部有 OpenFileDialog 控件,其图标为:
OpenFileDialog 是 Visual Studio 创建打开文件对话框的控件,也是背景控件,因此双击创建此控件后,OpenFileDialog 控件出现在窗体的下方,如下所示:
1) DefaultExt:所选取文件的扩展名。
2) FileName:所选取的文件名称。
3) Filter:筛选文件的类型,其语法如下:
4) FilterIndex:Filter 的索引,可参考前面对 Filter 的语句,在打开文件对话框的文件名称右边的字段就是索引显示的内容。
5) InitialDirectory:取得或是设定值,进入打开文件对话框最初的文件夹(目录)。
6) RestoreDirectory:取得或是设定一个值,如果用户在搜寻文件时更改了目录,那么,如果值为 true 则会将关闭对话框时的目录还原成先前的目录;默认其值是 false,则不会还原成先前的目录。
7) Title:打开文件对话框默认的名称是“打开”,可以使用 Title 属性更改此属性。
【实例】打开文本文件(*.txt)的实例,这个程序会将 data.txt文本文件在 textBox1 内打开。注意,textBox1 的 Multiline 属性是 true。
上述程序第 17~22 行使用了尚未介绍的读取文件概念:
在工具箱内部有 OpenFileDialog 控件,其图标为:

OpenFileDialog 是 Visual Studio 创建打开文件对话框的控件,也是背景控件,因此双击创建此控件后,OpenFileDialog 控件出现在窗体的下方,如下所示:

C#打开文件对话框的属性
打开文件对话框的常用属性如下:1) DefaultExt:所选取文件的扩展名。
2) FileName:所选取的文件名称。
3) Filter:筛选文件的类型,其语法如下:
openFileDialog1.Filter = “文字1 | 筛选规则1 | 文字2 | 筛选规则2 …”;下列是筛选文字文件的实例:
openFileDialog1.Filter = “Text Files(*.txt) | *.txt | 图档(*.jpg) | *.jpg”;经过上述设定后,“Text Files(*.txt)”成为索引 1(FileIndex),“图档(*.jpg)”成为索引 2(FileIndex)。
4) FilterIndex:Filter 的索引,可参考前面对 Filter 的语句,在打开文件对话框的文件名称右边的字段就是索引显示的内容。
5) InitialDirectory:取得或是设定值,进入打开文件对话框最初的文件夹(目录)。
6) RestoreDirectory:取得或是设定一个值,如果用户在搜寻文件时更改了目录,那么,如果值为 true 则会将关闭对话框时的目录还原成先前的目录;默认其值是 false,则不会还原成先前的目录。
7) Title:打开文件对话框默认的名称是“打开”,可以使用 Title 属性更改此属性。
C#打开文件对话框实操
openFileDialog1.ShowDialog() 方法可以启动打开文件对话框,在此对话框中单击“打开”按钮可以打开所选的文件,单击“取消”按钮则可以不打开文件同时关闭打开文件对话框。【实例】打开文本文件(*.txt)的实例,这个程序会将 data.txt文本文件在 textBox1 内打开。注意,textBox1 的 Multiline 属性是 true。
namespace ch { public partial class Form1 : Form { public Form1() { InitializeComponent(); openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"; openFileDialog1.FilterIndex = 1; // 使用 txt files (*.txt) } private void button1_Click(object sender, EventArgs e) { var fileContent = string.Empty; if (openFileDialog1.ShowDialog() == DialogResult.OK) { var fileName = openFileDialog1.FileName; // 取得要打开的文件 // 创建 StreamReader 对象 using (StreamReader reader = new StreamReader(fileName)) { fileContent = reader.ReadToEnd(); // 读文本文件 } textBox1.Text = fileContent; // 文本框显示内容 } } } }执行结果为:

上述程序第 17~22 行使用了尚未介绍的读取文件概念:
- 第 17 行是取得要打开的文件名称;
- 第 19 行把 using 当作语句使用,又称 using 区块,用这个方法创建 StreamReader 总线对象;
- 第 20~22 行是配合 using 的大括号,未来读写数据完成会自动关闭文件,所以可以省略 Close() 关闭文件;
- 第 21 行使用 StreamReader 类的 ReadToEnd() 方法可以读取目前读取位置到文件末端的所有内容,在这里相当于可以读取全部文件内容。