1. 程式人生 > >C#winform 設定開啟資料夾選擇對話方塊folderBrowserDialog自動定位至上一次的選擇路徑(新手記錄)

C#winform 設定開啟資料夾選擇對話方塊folderBrowserDialog自動定位至上一次的選擇路徑(新手記錄)

個人總結,實現開啟資料夾選擇對話方塊後可以定位到上一次的路徑

第一步:佈局

控制元件:一個textBox1,一個button1,一個folderBrowserDialog1
在這裡插入圖片描述

第二步:建立一個公共類

用來儲存folderBrowserDialog1上一次的選擇值

public static string PassFolderDialogSelectPath { get; set; }

第三步:程式碼

button1點選程式碼:選擇一個資料夾,並將選擇路徑賦值給textBox1

        private void button1_Click(object sender, EventArgs e)
        {
            folderBrowserDialog1.Description = "選擇資料夾"; 
            //MyFormPassValue.PassFolderDialogSelectPath是我的公共類
            if (MyFormPassValue.PassFolderDialogSelectPath != null)
            {
                folderBrowserDialog1.SelectedPath = MyFormPassValue.PassFolderDialogSelectPath;
            }
            textBox1.Text = folderBrowserDialog1.SelectedPath;
        }

窗體關閉程式碼:關閉窗體時,將textBox1的文字賦值給公共類

        private void folderBrowserDialogTestForm_FormClosed(object sender, FormClosedEventArgs e)
        {
            MyFormPassValue.PassFolderDialogSelectPath = textBox1.Text;
        }

到此為止,實現暫時的路徑儲存,但是,軟體開啟再關閉就失效。

第四步:寫入配置檔案App.config或者txt檔案

App.config檔案程式碼:注意新增引用System.Configuration
在這裡插入圖片描述


窗體關閉程式碼:新增寫入App.config程式碼

        private void folderBrowserDialogTestForm_FormClosed(object sender, FormClosedEventArgs e)
        {
            MyFormPassValue.PassFolderDialogSelectPath = textBox1.Text;
            //窗體關閉時,獲取資料夾對話方塊的路徑寫入配置檔案中
            Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
            config.AppSettings.Settings["FolderSelectedPath"].Value = MyFormPassValue.PassFolderDialogSelectPath;
            //一定要記得儲存,寫不帶引數的config.Save()也可以
            config.Save(ConfigurationSaveMode.Modified);
            //重新整理,否則程式讀取的還是之前的值(可能已裝入記憶體)
            System.Configuration.ConfigurationManager.RefreshSection("appSettings");
            //建立並寫入txt檔案
            //string str;
            //str = MyFormPassValue.PassFolderDialogSelectPath;
            //StreamWriter sw = new StreamWriter(Application.StartupPath + "\\FolderLastPath.txt",false);//false表示覆蓋,true表示追加
            //sw.Write(str);
            //sw.Close();//寫入          
        }

第五步:讀取配置檔案App.config 或者txt檔案

窗體載入程式碼:

        private void folderBrowserDialogTestForm_Load(object sender, EventArgs e)
        {
            //窗體載入時,獲取寫入配置檔案中的路徑
            MyFormPassValue.PassFolderDialogSelectPath = ConfigurationManager.AppSettings["FolderSelectedPath"];
             //讀取txt檔案
            //if (File.Exists(Application.StartupPath + "\\FolderLastPath.txt"))
            //{
            //    string str;
            //    StreamReader sr = new StreamReader(Application.StartupPath + "\\FolderLastPath.txt", false);
            //    str = sr.ReadLine().ToString();
            //    sr.Close();
            //    MyFormPassValue.PassFolderDialogSelectPath = str;///讀取
            //}
        }

到此為止,就可以實現關閉軟體再開啟時,也可以實現開啟資料夾選擇對話方塊時定位至上一次的選擇路徑。

第六步:問題解答,特別說明

你會發現,路徑根本寫不進去配置檔案中,沒有任何效果。
原因是………………
解決辦法:
將你debug或者release後生成的資料夾,即bin\下的debug或者release資料夾直接拷貝出來,放到另外的路徑下,再開啟裡面生成的.exe檔案試一試。
PS:今天將檔案打包時發現,關閉軟體時會報錯,對配置檔案的訪問被拒絕。後來發現這是因為win10的C盤許可權需要管理員許可權,可以在下面的檔案裡更改許可權:(劃線處修改成管理員許可權)
在這裡插入圖片描述
在這裡插入圖片描述