OpenFileDialog And SaveFileDialog

轉載: 

 http://www.cnblogs.com/my-blog/archive/2008/12/10/1351612.html

 

OpenFileDialog And SaveFileDialog


 
 

    除了PrintPreviewDialog外,其他對話框類都派生於抽象基類CommonDialog,這個基類的方法可以管理Windows通用對話框。

 

對話框適用的場合:

1.要讓用戶選擇和瀏覽要打開的文件,應使用OpenFileDialog。這個對話框可以配置爲只允許選擇一個文件,或可以選擇多個文件。

2.使用SaveFileDialog,用戶可以爲要保存的文件指定一個文件名和瀏覽的路徑。

3.PrintDialog用戶選擇一個打印機,並設置打印選項。

4.配置頁面的邊距,通常使用PageSetupDialog。

5.PrintViewDialog是在屏幕上進行打印預覽的一種方法,並有一些選項如縮放。

6.FontDialog列出了所有已安裝的Windows字體、樣式和字號,以及各字體的預覽效果,以便選擇字體。

7.ColorDialog用於選擇顏色。

 

文件對話框:

l         OpenFileDialog:打開文件對話框

l         SaveFileDialog:保存文件對話框

打開文件對話框

            OpenFileDialog ofd = new OpenFileDialog();

            ofd.ShowDialog();

    會彈出一個打開文件的對話框。

通過修改對象的Title屬性,可以更改對話框的標題

現在顯示的是“打開”,做如下設置

            ofd.Title = "設置後標題文字:)";

再次運行程序,我們就會看到相應的修改

我們還可以通過設置

InitialDirectory屬性來使打開文件對話框打開時在一個設置好的默認路徑上。它的默認值是一個空字符串,表示用戶的“我的文檔”目錄,第一次在應用程序中使用這個對話框時,就顯示“我的文檔”目錄下的文件,第二次再打開對話框時,顯示的目錄就與上一次打開的文件所在的目錄相同。

在實際使用的時候,不要寫死一個路徑,如果用戶不存在這個路徑會出現錯誤。爲了獲取特定的系統文件夾,可以使用System.Environment類的靜態方法GetFolderPath()。該方法接受一個Environment.SpecialFolder枚舉,其中可以定義要返回路徑的哪個系統目錄。

            ofd.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Templates);

設置文件過濾器用於打開文件對話框中顯示特定類型的文件。

            ofd.Filter = "Text Document(*.txt)|*.txt|All Files|*.*|我要顯示的文件類型(*.exe)|*.exe";

 


設置錯誤的Filter值會產生一個運行異常

System.ArgumentException和錯誤信息“The provided filter string is invalid”。過濾器前後也不允許有空格。

FilterIndex屬性指定列表框中的默認選項。

設置文件有效性驗證ValidateNames,驗證用戶輸入是否是一個有效的Windows文件名。

CheckPathExists:驗證路徑有效性

CheckFileExists:驗證文件有效性

            ofd.ValidateNames = true;

            ofd.CheckPathExists = true;

            ofd.CheckFileExists = true;

自定義幫助信息:

設置對象的ShowHelp屬性可以出現一個幫助按鈕,自定義幫助信息。

通過HelpRequest事件添加一個處理程序。

            ofd.ShowHelp = true;

            ofd.HelpRequest += new EventHandler(ofd_HelpRequest);

        private void ofd_HelpRequest(object sender, EventArgs e)

        {

            MessageBox.Show("我自己定義的幫助信息:)");

        }


    
    單擊幫助按鈕就會顯示我定義的幫助信息。



設置

Multiselect屬性可以使打開文件對話框打開多個文件。

通過如下判斷可以得到打開文件對話框單擊的是哪個按鈕。

            if(ofd.ShowDialog() == DialogResult.OK)

            {

            }

 

保存文件對話框:

使用Title屬性設置對話框的標題。

文件擴展名:

AddExtension是一個布爾屬性,它定義了文件擴展名是否應自動添加到用戶輸入的文件名上。如果用戶已經輸入了一個文件擴展名,就不會添加其它擴展名了。所以如果用戶輸入了文件名test,就保存文件test.txt,如果輸入了test.txt,保存的文件仍是test.txt,而不是test.txt.txt。

如果用戶沒有輸入文件擴展名,就使用DefaultExt屬性設置的文件擴展名。如果這個屬性爲空,就使用當前選擇的Filter中定義的文件擴展名。如果設置了Filter和DefaultExt,則不論Filter是什麼,都使用Default。

同OpenFileDialog一樣,具有ValidateNames、CheckFileExists和CheckPathExists三個屬性,區別是對於SaveFileDialog,CheckFileExists的默認值是false,表示可以提供新文件名,進行保存。

如果設置CreatePrompt屬性爲true,就會詢問用戶是否要創建一個新文件。

如果設置OverwritePrompt屬性爲true,就會詢問用戶是否要覆蓋一個已有的文件。

進行如下定義一個保存文件對話框後,我們通過如下功能可以實現一個另存爲的功能:

SaveFileDialog sfd = new SaveFileDialog();

    private void miFileSaveAs_Click(object sender, EventArgs e)

    {

        if(sfd.ShowDialog() == DialogResult.OK)

        {

            string fileName = sfd.FileName;

            SaveFile(fileName);

        }

    }

 

    protected void SaveFile(string fileName)

    {

        try

        {

            Stream stream = File.OpenWrite(fileName);

            using(StreamWriter writer = new StreamWriter(stream))

            {

                writer.Write(textBox1.Text);

            }

        }

        catch(IOException ex)

        {

            MessageBox.Show(ex.Message,"Simple Editor",MessageBoxButtons.OK,MessageBoxIcon.Exclamation);

        }

    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章