C#winform 設定開啟資料夾選擇對話方塊folderBrowserDialog自動定位至上一次的選擇路徑(新手記錄)
阿新 • • 發佈:2018-12-26
個人總結,實現開啟資料夾選擇對話方塊後可以定位到上一次的路徑
第一步:佈局
控制元件:一個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盤許可權需要管理員許可權,可以在下面的檔案裡更改許可權:(劃線處修改成管理員許可權)