對話框也是一種窗體,通常調用對對話框相關類型的ShowDialog方法來彈出對話框,當用戶關閉對話框后,該方法會返回一個DialogResult枚舉值,通過該值就可以判斷用戶采取了什么操作,例如單擊確認按鈕后,對話框關閉,showDialog方法返回DialogResult.ok,更具返回值就能知道確認了操作。
FileDialog類提供了選擇文件對話框的基本結構,他是一個抽象類,並派生出兩個子類——OpenFileDialog和SaveFialeDialog
OpenDialog用於打開文件,SaveFialeDialog用於保存文件是選新文件夾。打開文件對話框應該選擇已存在的文件,所以通過CheckFileExists屬性控制是否檢查文件的存在性,默認為True,應為打開不存在的文件沒有意義。在使用SaveFileDialog來選擇新文件的文件名,有時候會遇到保存的文件已經存在的情況,所以OverwritePrompt屬性應該為True,當保存的文件存在的情況下提示用戶是否要覆蓋現有文件。
Filter屬性是指定在選擇文件對哈框中應該顯示那些文件。用字符串表示。
文本文件(*.txt)|*.txt (| 符號,管道符號,分隔)
在選擇完成后,單擊“確認按鈕”關閉對話框,可以從FileName屬性獲得文件名字,該屬性是返回的文件全部路徑。
對於OpenFileDialog來說,Multiselect屬性為Ture,支持選擇多個文件,可以從FileNames屬性中得到一個string數組,代表用戶已經選擇的文件列表。
例如:OpenFileDialog和SaveFileDialog對話框的使用
在打開按鈕Click事件添加
private void button1_Click(object sender, EventArgs e) { if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK) { //顯示文件名 label1.Text = openFileDialog1.FileName; //加載圖片 try { using (System.IO.FileStream Stream = System.IO.File.Open(openFileDialog1. FileName, System.IO.FileMode.Open, System.IO.FileAccess.Read, System.IO.FileShare.Read)) { //創建圖像 Image img = Image.FromStream(Stream); //在pictureBox中顯示圖像 pictureBox1.Image = img; //關閉文件流,釋放資源 Stream.Close(); } } catch (Exception ex) { label1.Text = ex.Message;//顯示信息 } } }
首先電泳ShowDialog方法顯示選擇文件的對話框,如果用戶進行選擇並單擊確認按鈕,返回DialogResult.OK就從FileName屬性中得到選擇文件的路徑。通過File類的靜態方法Open打開文件,返回文件流
,在文件流基礎上創建Image對象,顯示在PictureBox控件中。
在保存Click事件中添加
private void button2_Click(object sender, EventArgs e) { if (saveFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK) { //准備寫入文件 System.IO.FileStream StreamOut = null; try { StreamOut = new System.IO.FileStream(saveFileDialog1.FileName, System.IO.FileMode.OpenOrCreate, System. IO.FileAccess.Write, System.IO.FileShare.Read); using (Bitmap bmp = new Bitmap(100, 100)) { Graphics g = Graphics.FromImage(bmp); //填充背景 g.Clear(Color.DarkBlue); //填充圓形區域 g.FillEllipse(Brushes.Yellow, new Rectangle(0, 0, bmp.Width, bmp.Height)); //釋放對象 g.Dispose(); //將圖像內容寫入文件流 bmp.Save(StreamOut, System.Drawing.Imaging.ImageFormat.Png); } //顯示保存成功 MessageBox.Show("圖像文件保存成功。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { //釋放文件流占用的資源 if (StreamOut != null) { StreamOut.Close(); StreamOut.Dispose(); } } } }

