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

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);
}
}