相信很多朋友在日常的編程中總會遇到各鍾各樣的問題,關於在WinForm中選擇本地文件就是很多朋友們都認為很難的一個學習.net的難點,
在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 (!((IList)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";