C#對話框-使用打開和保存對話框


 

除了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);

        }

    }


免責聲明!

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



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