Winform OpenFileDialog打開文件對(duì)話框
OpenFileDialog類提供了用戶打開文件的功能,它有如下屬性:
屬性
InitialDirectory:設(shè)置對(duì)話框的初始目錄。
Filter:要在對(duì)話框中顯示的文件篩選器,例如,"文本文件(*.txt)|*.txt|所有文件(*.*)||*.*"。
FilterIndex:在對(duì)話框中選擇的文件篩選器的索引,如果選第一項(xiàng)就設(shè)為1。
RestoreDirectory:控制對(duì)話框在關(guān)閉之前是否恢復(fù)當(dāng)前目錄。
FileName:第一個(gè)在對(duì)話框中顯示的文件或最后一個(gè)選取的文件。
Title:將顯示在對(duì)話框標(biāo)題欄中的名稱。
Multiselect:設(shè)置打開對(duì)話框可以多選。
1、新建一個(gè)Winform窗體應(yīng)用程序,命名為:OpenFileDialogDemo
2、在界面上添加一個(gè)按鈕的控件(用于打開文件的窗口),添加日志輸出的文本控件(輸出最終用戶打開的文件的目錄、文件名稱和文件內(nèi)容)。
3、后臺(tái)代碼實(shí)現(xiàn):
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace OpenFileDialogDemo { public partial class Form1 : Form { public Form1() { InitializeComponent(); } /// <summary> /// 打開文件按鈕單擊事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btn_OpenFile_Click(object sender, EventArgs e) { //定義一個(gè)文件打開控件 OpenFileDialog ofd = new OpenFileDialog(); //設(shè)置打開對(duì)話框的初始目錄,默認(rèn)目錄為exe運(yùn)行文件所在的路徑 ofd.InitialDirectory = Application.StartupPath; //設(shè)置打開對(duì)話框的標(biāo)題 ofd.Title = "請(qǐng)選擇要打開的文件"; //設(shè)置打開對(duì)話框可以多選 ofd.Multiselect = true; //設(shè)置對(duì)話框打開的文件類型 ofd.Filter = "文本文件|*.txt|音頻文件|*.wav|圖片文件|*.jpg|所有文件|*.*"; //設(shè)置文件對(duì)話框當(dāng)前選定的篩選器的索引 ofd.FilterIndex = 2; //設(shè)置對(duì)話框是否記憶之前打開的目錄 ofd.RestoreDirectory = true; if (ofd.ShowDialog() == DialogResult.OK) { //獲取用戶選擇的文件完整路徑 string filePath = ofd.FileName; //獲取對(duì)話框中所選文件的文件名和擴(kuò)展名,文件名不包括路徑 string fileName = ofd.SafeFileName; OutLog("用戶選擇的文件目錄為:" + filePath); OutLog("用戶選擇的文件名稱為:"+fileName); OutLog("**************選中文件的內(nèi)容**************"); using (FileStream fsRead = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.Read)) { //定義二進(jìn)制數(shù)組 byte[] buffer = new byte[1024 * 1024 * 5]; //從流中讀取字節(jié) int r= fsRead.Read(buffer, 0, buffer.Length); OutLog(Encoding.Default.GetString(buffer,0,r)); } } } /// <summary> /// 輸出日志 /// </summary> /// <param name="strLog"></param> private void OutLog(string strLog) { //如果日志信息長(zhǎng)度超過(guò)1000行,則自動(dòng)清空 if (txt_FileInfo.GetLineFromCharIndex(txt_FileInfo.Text.Length) > 1000) { //清空文本 txt_FileInfo.Clear(); } txt_FileInfo.AppendText(DateTime.Now.ToString("HH:mm:ss ")+strLog+"\r\n"); } } }
4、生成exe文件測(cè)試
5、點(diǎn)擊打開文件按鈕,打開對(duì)話框。默認(rèn)的目錄是exe文件所在的目錄:
6、在打開文件的類型中是我們?cè)O(shè)置的4和類型,默認(rèn)選中的是第2個(gè)音頻文件類型:
7、選中要打開的文件后,程序運(yùn)行效果:
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
詳解Asp.net web.config customErrors 如何設(shè)置
這篇文章主要介紹了詳解Asp.net web.config customErrors 如何設(shè)置,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-02-02VB.NET設(shè)置屏幕分辨率、顏色位數(shù)、刷新率 實(shí)例代碼
這篇文章介紹了VB.NET設(shè)置屏幕分辨率、顏色位數(shù)、刷新率 實(shí)例代碼,有需要的朋友可以參考一下2013-07-07asp.net用Zxing庫(kù)實(shí)現(xiàn)條形碼輸出的具體實(shí)現(xiàn)
這篇文章主要介紹了asp.net用Zxing庫(kù)實(shí)現(xiàn)條形碼輸出的具體實(shí)現(xiàn),有需要的朋友可以參考一下2013-12-12Server Application Unavailable出現(xiàn)的原因及解決方案小結(jié)
今天在服務(wù)器安裝了個(gè).net 4.0 framework(原本有1.0和2.0的),配置好站點(diǎn)后,選擇版本為4.0,訪問(wèn)出錯(cuò),asp.net經(jīng)常會(huì)出現(xiàn)這個(gè)問(wèn)題,這里腳本之家簡(jiǎn)單的給整理下2012-05-05.NET Core對(duì)象池的應(yīng)用:擴(kuò)展篇
本文主要講解.NET Core對(duì)象池的池化集合、池化StringBuilder、ArrayPool<T>以及MemoryPool<T>,需要了解的小伙伴可以多學(xué)習(xí)這篇文章,相信可以幫助到你2021-09-09在.NET?Core中使用CSRedis的詳細(xì)過(guò)程
這篇文章主要介紹了在.NET?Core中使用CSRedis的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06asp.net生成靜態(tài)后冗余代碼,去掉viewstate生成的代碼
asp.net生成的viewstate垃圾信息超過(guò)了20K,如果頁(yè)面前二K不是內(nèi)容會(huì)被引擎處罰,所以我們需要清理下asp.net生成靜態(tài)后冗余代碼2012-10-10