我們在使用桌面軟件的時候經常會使用到選擇文件並打開和另存為等的窗口,這樣方便了我們自由選擇打開文件和保存文件的路徑。
注:下面說的這兩個功能,只是返回文件路徑。具體打開和保存功能還需要結合C#的IO流。
選擇文件功能

代碼示例:
public void Open() { OpenFileDialog fileDialog = new OpenFileDialog(); fileDialog.Multiselect = true; fileDialog.Title = "請選擇文件"; fileDialog.Filter = "所有文件(*xls*)|*.xls*"; //設置要選擇的文件的類型 Thread t = new Thread((ThreadStart)(() => { if (fileDialog.ShowDialog() == DialogResult.OK) { string file = fileDialog.FileName;//返回文件的完整路徑 } })); t.SetApartmentState(ApartmentState.STA); t.Start(); t.Join(); }
保存文件路徑選擇功能:

代碼如下:
public string ShowSaveFileDialog(string base64Img) { string localFilePath = ""; //string localFilePath, fileNameExt, newFileName, FilePath; SaveFileDialog sfd = new SaveFileDialog(); //設置文件類型,此處設置的是jpg圖片類型。可以設置其他格式,如Excel:Excel表格(*.xls)|*.xls sfd.Filter = "JPG圖片文件(*.jpg)|*.jpg"; //設置默認文件類型顯示順序 sfd.FilterIndex = 1; //保存對話框是否記憶上次打開的目錄 sfd.RestoreDirectory = true; //點了保存按鈕進入 Thread t = new Thread((ThreadStart)(() => { if (sfd.ShowDialog() == DialogResult.OK) { localFilePath = sfd.FileName.ToString(); //獲得文件路徑 string fileNameExt = localFilePath.Substring(localFilePath.LastIndexOf("\\") + 1)+".jpg"; //獲取文件名,不帶路徑
//將base64圖片保存到本地
string strbase64 = img.Substring(img.IndexOf(',') + 1);
strbase64 = strbase64.Trim('\0');
byte[] imageBytes = Convert.FromBase64String(strbase64);
//保存圖片
System.IO.File.WriteAllBytes(localFilePath, imageBytes);
//獲取文件路徑,不帶文件名
//FilePath = localFilePath.Substring(0, localFilePath.LastIndexOf("\\"));
//給文件名前加上時間
//newFileName = DateTime.Now.ToString("yyyyMMdd") + fileNameExt;
//在文件名里加字符
//saveFileDialog1.FileName.Insert(1,"dameng");
//System.IO.FileStream fs = (System.IO.FileStream)sfd.OpenFile();//輸出文件
////fs輸出帶文字或圖片的文件,就看需求了
}
}));
t.SetApartmentState(ApartmentState.STA);
t.Start();
t.Join();
return localFilePath;
}
