[WinForm|C#] 開啟檔案資料夾視窗(OpenFileDialog)與儲存(SaveFileDialog)到指定的路徑

紀錄如何在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?

 

http://msdn.microsoft.com/zh-tw/library/system.windows.forms.filedialog.restoredirectory(v=vs.110).aspx

 


 

文章中的敘述如有觀念不正確錯誤的部分,歡迎告知指正 謝謝 =)

另外要轉載請附上出處 感謝