OpenFileDialog 组件是.net预设的有模式对话框之一,与Windows操作系统中常见的“打开”对话框一样,如下图一所示。
我们可以使用 OpenFileDialog 组件快速创建用户熟悉的打开文件对话框;用户可以使用它浏览计算机以及网络中任何计算机上的文件夹,并选择打开一个或多个文件。该对话框返回用户在对话框中选定的文件的路径和名称。
在vb.net工具箱中,OpenFileDialog 组件如下图二所示:
一、OpenFileDialog 组件常用属性和方法
1、FileName 属性:一个包含在文件对话框中选定的文件名的字符串,包括文件的完整路径。
2、FileNames 属性:获取对话框中所有选定文件的文件名。
3、AddExtension 属性:指示如果用户省略扩展名,对话框是否自动在文件名中添加扩展名。
4、CheckFileExists 属性:指示如果用户指定不存在的文件名,对话框是否显示警告。
5、CheckPathExists 属性:获取或设置一个值,该值指示如果用户指定不存在的路径,对话框是否显示警告。
6、DefaultExt 属性:默认文件扩展名,返回的字符串不包含句点 (.),默认值为一空字符串 ("")。当用户输入文件名时未指定文件的扩展名则自动以该属性来补全扩展名,如果 DefaultExt 属性为默认空字符串,则以当前选定的筛选器中的文件类型来补全缺少的文件扩展名。
7、DereferenceLinks 属性:指示对话框返回的是快捷方式引用的文件的位置(设置为True)还是返回快捷方式(.lnk)的位置(设置为False)。
默认值为True,即选中快捷方式的时候,FileName 返回的是文件的真实路径,如果该值为False,则返回的是该快捷方式所在的位置。
8、Filter 属性:当前文件名筛选器字符串,该字符串决定对话框的“另存为文件类型”或“文件类型”框中出现的选择内容。
9、FilterIndex 属性:获取或设置文件对话框中当前选定筛选器的索引。
10、InitialDirectory 属性:文件对话框显示的初始目录。
11、Multiselect 属性:指示对话框是否允许选择多个文件。
12、ShowReadOnly 属性:指示对话框是否包含只读复选框。当它为True的时候,将会在如图一红圈的位置显示“以只读方式打开”的复选框。ReadOnlyChecked 属性:指示是否选定只读复选框,默认为False,需要与 ShowReadOnly 属性配合使用。
13、RestoreDirectory 属性:指示对话框在关闭前是否还原当前目录。
14、Title 属性:获取或设置文件对话框标题。
我们通过 ShowDialog 方法来显示“打开”对话框。通过 OpenFile 方法以只读方式打开一个选定的文件,如果需要进行写操作,则必须使用 StreamReader 类的实例打开文件。
下面我们就演示如何使用 OpenFileDialog 组件来打开文件。
二、以只读方式打开文件
在窗体的Button按钮添加如下代码:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim myStream As System.IO.Stream
openFileDialog1.InitialDirectory = "c:\"
openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"
openFileDialog1.FilterIndex = 2
OpenFileDialog1.RestoreDirectory = True
If OpenFileDialog1.ShowDialog() = DialogResult.OK Then
MsgBox(OpenFileDialog1.FileName)
myStream = OpenFileDialog1.OpenFile()
If Not (myStream Is Nothing) Then
MessageBox.Show(myStream.Length.ToString)
myStream.Close()
End If
End If
End Sub
以上代码是以只读方式打开用户指定的文件,运行效果如下图三所示:如果需要对打开的文件进行操作,就不能使用 OpenFile 方法了,我们需要使用 Stream 类来打开,如下代码所示:
openFileDialog1.InitialDirectory = "c:\"
openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"
openFileDialog1.FilterIndex = 2
OpenFileDialog1.RestoreDirectory = True
If OpenFileDialog1.ShowDialog() = DialogResult.OK Then
Dim sr As New System.IO.StreamReader(OpenFileDialog1.FileName)
MessageBox.Show(sr.ReadToEnd)
sr.Close()
End If
用流来打开文件,还需要注意文件的编码方式,对于文本文件的读写可以参看这里:VB.NET读写文本文件方法。本文作者: