c# 對話框控件


  對話框也是一種窗體,通常調用對對話框相關類型的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();
                    }
                }
            }
        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM