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
用流來開啟檔案,還需要注意檔案的編碼方式
留言列表