C#選擇文件、選擇文件夾、打開文件


1、選擇文件用OpenDialog

OpenFileDialog dialog = new OpenFileDialog();
dialog.Multiselect = true;//該值確定是否可以選擇多個文件
dialog.Title = "請選擇文件夾";
dialog.Filter = "所有文件(*.*)|*.*";
if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
    string file = dialog.FileName;
}
Filter 屬性 賦值為一字符串 用於過濾文件類型;
字符串說明如下:
‘|’分割的兩個,一個是注釋,一個是真的Filter,顯示出來的是那個注釋。如果要一次顯示多中類型的文件,用分號分開。
如:
Open1.Filter="圖片文件(*.jpg,*.gif,*.bmp)|*.jpg;*.gif;*.bmp";
則過濾的文件類型為 “|”號  右邊的 *.jpg;*.gif;*.bmp 三種類型文件,在OpenDialog/SaveDialog中顯示給用戶看的文件類型字符串則是 :“|”號  左邊的 圖片文件(*.jpg,*.gif,*.bmp)。
再如:
Open1.Filter="圖像文件(*.jpg;*.jpg;*.jpeg;*.gif;*.png)|*.jpg;*.jpeg;*.gif;*.png";

2、使用System.Windows.Forms.FolderBrowserDialog選擇文件夾

System.Windows.Forms.FolderBrowserDialog dialog =new System.Windows.Forms.FolderBrowserDialog();
dialog.Description = "請選擇Txt所在文件夾";
if (dialog.ShowDialog()==System.Windows.Forms.DialogResult.OK  )
{
   if (string.IsNullOrEmpty(dialog.SelectedPath))
   {
       System.Windows.MessageBox.Show(this, "文件夾路徑不能為空", "提示");
       return;
   }
   this.LoadingText = "處理中...";
   this.LoadingDisplay = true;
   Action<string> a = DaoRuData;
   a.BeginInvoke(dialog.SelectedPath,asyncCallback, a);
}

3、直接打開某路徑下的文件或者文件夾

 System.Diagnostics.Process.Start("ExpLore", "C:\\window");

 

<C#>_在窗體中打開文件

實現的代碼如下:

public void openfile(int n)
        {
            OpenFileDialog openfile = new OpenFileDialog();


            openfile.Filter = "*.cs | *.cs";//設置文件后綴
            if (openfile.ShowDialog() == DialogResult.OK)
            {
                string filename = openfile.FileName;
                dic1.Add(n, filename);
                fileArr[n].Text = filename.Substring(filename.LastIndexOf("\\") + 1, filename.LastIndexOf(".") - (filename.LastIndexOf("\\") + 1));
            }           
        }



頁面中的【NO】按鈕是用來打開文件的,打開的文件是readonly權限,是不可編寫的,點擊【編輯】按鈕就可以打開文件並且編輯,實現代碼如下:

public void readfile(int btNumber, string mode)//點擊【NO】按鈕,以只讀發方式打開文件
        {
            int key = Convert.ToInt16(numArr[btNumber].Text) - 1;
            foreach (KeyValuePair<int, string> kv in dic1)
            {
                if (kv.Key == key)
                {
                    System.IO.FileInfo f = new System.IO.FileInfo(kv.Value);
                    if (mode == "ReadOnly")
                    {
                        f.Attributes = System.IO.FileAttributes.ReadOnly;
                    }                   
                    System.Diagnostics.Process csProcess = System.Diagnostics.Process.Start(kv.Value);
                }
            }  
        }



public void readfile(int btNumber)//點擊【編輯】按鈕,以可讀可寫發方式打開文件
        {
            int key = Convert.ToInt16(numArr[btNumber].Text) - 1;
            foreach (KeyValuePair<int, string> kv in dic1)
            {
                if (kv.Key == key)
                {
                    System.IO.FileInfo f = new System.IO.FileInfo(kv.Value);
                    f.Attributes = System.IO.FileAttributes.Normal;
                    System.Diagnostics.Process csProcess = System.Diagnostics.Process.Start(kv.Value);
                }
            }
        }



       在C#窗體中使用代碼實現文件的打開,用的是進程的思想,即Windows中每個軟件都是一個進程,我們平時在電腦中自己打開一個txt文件就是打開一個進程,在代碼中同樣可以實現打開文件的功能。

關鍵語句就是:

System.Diagnostics.Process csProcess = System.Diagnostics.Process.Start(kv.Value);

這里的kv.Value是用鍵值對把文件名和【NO】中的序號對應起來,方便做一些讀寫操作。



在沒有設置文件的權限時,文件是不可改變的,所以以上代碼中,如果不實現

 f.Attributes = System.IO.FileAttributes.ReadOnly;

文件打開后也是不能更改的,大家可以試試。



為了使文件能夠修改,要設置成 f.Attributes = System.IO.FileAttributes.Normal;



設置文件的屬性主要用到了FileInfo類的Attributes屬性。
View Code

C# OpenFileDialog打開文件對話框(詳解)

一、打開文件對話框(OpenFileDialog)

1、 OpenFileDialog控件的基本屬性

  • InitialDirectory:對話框的初始目錄 
  • Filter: 獲取或設置當前文件名篩選器字符串,例如,"文本文件(*.txt)|*.txt|所有文件(*.*)||*.*" 
  • FilterIndex 在對話框中選擇的文件篩選器的索引,如果選第一項就設為1 
  • RestoreDirectory 控制對話框在關閉之前是否恢復當前目錄 
  • FileName:第一個在對話框中顯示的文件或最后一個選取的文件 
  • Title 將顯示在對話框標題欄中的字符 
  • AddExtension 是否自動添加默認擴展名 
  • CheckPathExists 在對話框返回之前,檢查指定路徑是否存在 
  • DefaultExt 默認擴展名 
  • DereferenceLinks 在從對話框返回前是否取消引用快捷方式 
  • ShowHelp 啟用"幫助"按鈕 
  • ValiDateNames 控制對話框檢查文件名中是否不含有無效的字符或序列

2、 OpenFileDialog控件有以下常用事件

FileOk 當用戶點擊"打開"或"保存"按鈕時要處理的事件 
HelpRequest 當用戶點擊"幫助"按鈕時要處理的事件

可以用以下代碼來實現上面這個對話框:

private void openFileDialogBTN_Click(object sender, System.EventArgs e)
{
    OpenFileDialog openFileDialog=new OpenFileDialog();
    openFileDialog.InitialDirectory="c:\\";//注意這里寫路徑時要用c:\\而不是c:\
    openFileDialog.Filter="文本文件|*.*|C#文件|*.cs|所有文件|*.*";
    openFileDialog.RestoreDirectory=true;
    openFileDialog.FilterIndex=1;
    if (openFileDialog.ShowDialog()==DialogResult.OK)
    {
        fName=openFileDialog.FileName;
        File fileOpen=new File(fName);
        isFileHaveName=true;
        richTextBox1.Text=fileOpen.ReadFile();
        richTextBox1.AppendText("");
    }
}
View Code

3、 獲取對話框的文件名

openfiledialog.FileName //獲取或設置一個包含在文件對話框中選定的文件名字符串

openfiledialog.SafeFileName  //獲取選定對話框中的文件名和擴展名

二、打開文件夾對話框(FolderBrowserDialog)

FolderBrowserDialog dialog = new FolderBrowserDialog();
dialog.Description = "請選擇文件路徑";

if (dialog.ShowDialog() == DialogResult.OK)
{
    savePath = dialog.SelectedPath;
    textBox2.Text = savePath;
}
View Code

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM