紀錄如何在WinForm與WPF中使用OpenFileDialog開啟視窗與透過SaveFileDialog儲存檔案到指定的路徑
前言
紀錄如何在WinForm與WPF中使用OpenFileDialog開啟視窗與透過SaveFileDialog儲存檔案到指定的路徑
WinForm開啟檔案資料夾視窗(OpenFileDialog)
使用OpenFileDialog類別,其中有一些屬性介紹一下
屬性 | 解說 |
RestoreDirectory | True表示,關掉視窗時會還原原先的開啟目錄位置(但是在Vista版本以上都會是true,即便你設成false) |
InitialDirectory | 視窗開啟時的初始目錄位置 |
Title | 開啟視窗時的視窗標題 |
Filter | 要過濾,可以選擇的副檔名 |
FileName | 取得的檔案路徑名稱 |
InitialDirectory 可以搭配取得專案路徑與移動至上層目錄-使用DirectoryInfo來移動路徑
如果不設定的話,預設會是bin的Debug或Release資料夾下
而
dlg.Filter = "JPeg Image|*.jpg|Bitmap Image|*.bmp|Gif Image|*.gif|Png Image|*.png";
則表示我可以開啟的檔案副檔名有jpeg、jpg、bmp、gif、png等格式
private string OpenLoadImgFile()
{
OpenFileDialog dlg = new OpenFileDialog();
//移動上層在指定下層路徑
dlg.RestoreDirectory = true;
dlg.InitialDirectory = dir.Parent.Parent.FullName + @"\ModelImages";
dlg.Title = "Open Image File";
// Set filter for file extension and default file extension
dlg.Filter = "JPeg Image|*.jpg|Bitmap Image|*.bmp|Gif Image|*.gif|Png Image|*.png";
// Display OpenFileDialog by calling ShowDialog method ->ShowDialog()
// Get the selected file name and display in a TextBox
if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK && dlg.FileName != null)
{
// Open document
string filename = dlg.FileName;
return filename;
}
else
{
return null;
}
}
最後返回檔案的路徑並給真正檔案開啟的類別操作
WinForm開啟檔案資料夾視窗儲存(SaveFileDialog)
在來是載入檔案的相反,儲存
一樣的與openFileDialog的屬性一致,要儲存檔案名稱與路徑的部分是透過SaveFileDialog的FileName來取得
然後這邊的FilterIndex是你指定的檔案格式過濾器,在儲存時選擇要儲存的格式後便可以從FilterIndex取得!
這邊已儲存Bitmap圖為例
private bool SaveImgFile(Bitmap bitmap)
{
// Displays a SaveFileDialog so the user can save the Image
// assigned to Button2.
SaveFileDialog dlg = new SaveFileDialog();
dlg.Filter = "JPeg Image|*.jpg|Bitmap Image|*.bmp|Gif Image|*.gif|Png Image|*.png";
dlg.Title = "Save an Image File";
// If the file name is not an empty string open it for saving.
if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK && dlg.FileName != "")
{
switch (dlg.FilterIndex)
{
case 1:
bitmap.Save(dlg.FileName, System.Drawing.Imaging.ImageFormat.Jpeg);
break;
case 2:
bitmap.Save(dlg.FileName, System.Drawing.Imaging.ImageFormat.Bmp);
break;
case 3:
bitmap.Save(dlg.FileName, System.Drawing.Imaging.ImageFormat.Gif);
break;
case 4:
bitmap.Save(dlg.FileName, System.Drawing.Imaging.ImageFormat.Png);
break;
}
return true;
}
return false;
}
參考資料
What does the FileDialog.RestoreDirectory Property actually do?
文章中的敘述如有觀念不正確錯誤的部分,歡迎告知指正 謝謝 =)
另外要轉載請附上出處 感謝