對話框中我們常用了以下幾種:
1、檔案對話框(FileDialog) 它又常用到兩個:
打開檔案對話框(OpenFileDialog)
儲存檔案對話(SaveFileDialog)
2、字型對話框(FontDialog)
3、顔色對話框(ColorDialog)
4、列印預浏對話框(PrintPreviewDialog)
5、頁面設定(PrintDialog)
6、列印對話框(PrintDialog)
還有更多,有時間的網友可以看看MSDN。下面我們一個個來介紹。
檔案對話框(FileDialog)
一、打開檔案對話框(OpenFileDialog)
1、 OpenFileDialog控件有以下基本屬性
InitialDirectory | 對話框的初始目錄 |
Filter | 要在對話框中顯示的檔案篩選器,例如,"文本檔案(*.txt)|*.txt|所有檔案(*.*)||*.*" |
FilterIndex | 在對話框中選擇的檔案篩選器的索引,如果選第一項就設為1 |
RestoreDirectory | 控制對話框在關閉之前是否恢複目前目錄 |
FileName | 第一個在對話框中顯示的檔案或最後一個選取的檔案 |
Title | 将顯示在對話框标題欄中的字元 |
AddExtension | 是否自動添加預設擴充名 |
CheckPathExists | 在對話框傳回之前,檢查指定路徑是否存在 |
DefaultExt | 預設擴充名 |
DereferenceLinks | 在從對話框傳回前是否取消引用快捷方式 |
ShowHelp | 啟用"幫助"按鈕 |
ValiDateNames | 控制對話框檢查檔案名中是否不含有無效的字元或序列 |
2、 OpenFileDialog控件有以下常用事件
FileOk | 當使用者點選"打開"或"儲存"按鈕時要處理的事件 |
HelpRequest | 當使用者點選"幫助"按鈕時要處理的事件 |
3、OpenFileDialog的效果如下:
![]() |
可以用以下代碼來實作上面這個對話框:
private void openFileDialogBTN_Click(object sender, System.EventArgs e){ OpenFileDialog openFileDialog=new OpenFileDialog(); openFileDialog.InitialDirectory="c:\\";//注意這裡寫路徑時要用c:\\而不是c:\ openFileDialog.Filter="文本檔案|*.*|C#檔案|*.cs|所有檔案|*.*"; openFileDialog.RestoreDirectory=true; openFileDialog.FilterIndex=1; if (openFileDialog.ShowDialog()==DialogResult.OK) { fName=openFileDialog.FileName; File fileOpen=new File(fName); isFileHaveName=true; richTextBox1.Text=fileOpen.ReadFile(); richTextBox1.AppendText(""); } } |
其中有用到了File()這個類,是我在程式用來執行檔案操作,自己寫的,在最後附了這個類的源碼。有興趣的網友可以自己分析。
二、儲存檔案對話框(SaveFileDialog)
儲存檔案對話框控件有兩種情況,一就是儲存,二就是另存為,儲存很簡單,就是在檔案已經打開的情況下的,再把檔案寫一篇,在這裡我們主要講另存為的情況(SaveAs)。
1,SaveFileDialog控件的屬性
Filter | 要在對話框中顯示的檔案篩選器,例如,"文本檔案(*.txt)|*.txt|所有檔案(*.*)|*.*" |
FilterIndex | 在對話框中選擇的檔案篩選器的索引,如果選第一項就設為1 |
RestoreDirectory | 控制對話框在關閉之前是否恢複目前目錄 |
AddExtension | 是否自動添加預設擴充名 |
CheckFileExists | |
CheckPathExists | 在對話框傳回之前,檢查指定路徑是否存在 |
Container | 控制在将要建立檔案時,是否提示使用者。隻有在ValidateNames為真值時,才适用。 |
DefaultExt | 預設擴充名 |
DereferenceLinks | 在從對話框傳回前是否取消引用快捷方式 |
FileName | 第一個在對話框中顯示的檔案或最後一個選取的檔案 |
InitialDirector | 對話框的初始目錄 |
OverwritePrompt | 控制在将要在改寫現在檔案時是否提示使用者,隻有在ValidateNames為真值時,才适用 |
ShowHelp | 啟用"幫助"按鈕 |
Title | 将顯示在對話框标題欄中的字元 |
ValidateNames | 控制對話框檢查檔案名中是否不含有無效的字元或序列 |
2、SaveFileDialog事件如下:
FileOk | 當使用者點選"打開"或"儲存"按鈕時要處理的事件 |
HelpRequest | 當使用者點選"幫助"按鈕時要處理的事件 |
3、SaveFileDialog的效果如下:
|
4、用下例代碼可以實作
private void saveAsDialogBTN_Click(object sender, System.EventArgs e) { SaveFileDialog saveFileDialog=new SaveFileDialog(); saveFileDialog.Filter="文本檔案|*.*|C#檔案|*.cs|所有檔案|*.*"; saveFileDialog.FilterIndex=2; saveFileDialog.RestoreDirectory=true; if(saveFileDialog.ShowDialog()==DialogResult.OK) { if(saveFileDialog.ShowDialog()==DialogResult.OK) { fName=saveFileDialog.FileName; File fSaveAs=new File(fName); isFileHaveName=true; file://儲存的檔案有名字 fSaveAs.WriteFile(richTextBox1.Text); } } } |
其實這些都可以在VS.NET的IDE環境中直接完成,為了說明問題,我還是一條條列也來了。當中用到了一個File的類庫,下面是源程式:
File.cs
using System; using System.IO; using System.Windows.Forms; using System.Text; namespace dialog { /// /// Summary description for File. /// public class File { string fileName; public File(string fileName) { this.fileName=fileName; } public string ReadFile() { try { StreamReader sr=new StreamReader(fileName,Encoding.Default); string result=sr.ReadToEnd(); sr.Close(); return result; } catch(Exception e){MessageBox.Show(e.Message);} return null; } public void WriteFile(string str) { try { StreamWriter sw=new StreamWriter(fileName,false,Encoding.Default); sw.Write(str); sw.Close(); } catch(Exception e){MessageBox.Show(e.Message,"儲存檔案出錯!");} } } } |
字型對話框(FontDialog)
在文字進行中,我們常用到字型,現在我們來做一個最常見的字型對話框。
一、 字型對話框(FontDialog)常用屬性
ShowColor | 控制是否顯示顔色選項 |
AllowScriptChange | 是否顯示字型的字元集 |
Font | 在對話框顯示的字型 |
AllowVerticalFonts | 是否可選擇垂直字型 |
Color | 在對話框中選擇的顔色 |
FontMustExist | 當字型不存在時是否顯示錯誤 |
MaxSize | 可選擇的最大字号 |
MinSize | 可選擇的最小字号 |
ScriptsOnly | 顯示排除OEM和Symbol字型 |
ShowApply | 是否顯示"應用"按鈕 |
ShowEffects | 是否顯示下劃線、删除線、字型顔色選項 |
ShowHelp | 是否顯示"幫助"按鈕 |
二、 字型對話框(FontDialog)的事件
Apply | 當點選"應用"按鈕時要處理的事件 |
HelpRequest | 當點選"幫助"按鈕時要處理的事件 |
三、 字型對話框(FontDialog)的效果
|
四、 實作代碼
private void fontDialogBTN_Click(object sender, System.EventArgs e) { FontDialog fontDialog=new FontDialog(); fontDialog.Color=richTextBox1.ForeColor; fontDialog.AllowScriptChange=true; fontDialog.ShowColor=true; if(fontDialog.ShowDialog()!=DialogResult.Cancel) { richTextBox1.SelectionFont=fontDialog.Font;//将目前標明的文字改變字型 } } |
上面代碼将標明的文本設定為目前FontDialog對話框中的字型。
顔色對話框(ColorDialog)
顔色拾取框也是我們常見的對話框之一,下面我們來看看在C#中是如何操作顔色對話框的呢?
一、 顔色對話框(ColorDialog)的常見屬性
AllowFullOpen | 禁止和啟用"自定義顔色"按鈕 |
FullOpen | 是否最先顯示對話框的"自定義顔色"部份 |
ShowHelp | 是否顯示"幫助"按鈕 |
Color | 在對話框中顯示的顔色 |
AnyColor | 顯示可選擇任何顔色 |
CustomColors | 是否顯示自定義顔色 |
SolidColorOnly | 是否隻能選擇純色 |
二、 顔色對話框(ColorDialog)的效果如下:
|
三、 實作代碼見下:
private void colorDialogBTN_Click(object sender, System.EventArgs e) { ColorDialog colorDialog=new ColorDialog(); colorDialog.AllowFullOpen=true; colorDialog.FullOpen=true; colorDialog.ShowHelp=true; colorDialog.Color=Color.Black;//初始化目前文本框中的字型顔色,當使用者在ColorDialog對話框中點選"取消"按鈕 file://恢複原來的值 colorDialog.ShowDialog(); richTextBox1.SelectionColor=colorDialog.Color; } |
實作顔色對話框(ColorDialog)很容易吧,其實不隻是顔色對話框,C#也是很容易的,隻要用心去學,都容易的。講完了顔色對話框(ColorDialog),我們來講列印和頁面設定.
頁面設定(PageSetupDialog)
其實頁面設定(PageSetupDialog)沒有太多的講,既然講到這裡,我還是把PageSetupDialog中常用的屬性列出來吧
一、頁面設定(PageSetupDialog)常見屬性
AllowMargins | 設定是否可以對邊距的編輯 |
AllowOrientation | 是否可以使用"方向"單選框 |
AllowPaper | 設定是否可以對紙張大小的編輯 |
AllowPrinter | 設定是否可以使用"列印機"按鈕 |
Document | 擷取列印機設定的PrintDocument |
MinMargins | 允許使用者選擇的最小邊距 |
二、面設定(PageSetupDialog)的效果如下
|
就這麼簡單啦,我們看看下面的吧,還有更重磅的東東呢?關于列印的。
列印預浏及列印
列印是我們在windows程式設計中常要用到的功能,在以前都是很麻煩工作,但在Microsoft .net Framework中列印是以元件提供給我們使用,不過還是點麻煩的,是以就專門寫出來,供大家參改。
一, 在.net環境中,說到列印,就不能不說PrintDocumet這個類,PrintDocument屬于System.Drawing.Printing這個名字空間,PrintDocument這個類是實作列印的核心代碼。
如果要實作列印,就必需首先構造PrintDocument對象添加列印事件,
printDocument.PrintPage+=new PrintPageEventHandler(this.printDocument_PrintPage)
列印其實也是調用Graphics類的方法進行畫圖,下面這代碼是根據MSDN上提供的例程改寫的。MSDN列印例程位址:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemDrawingPrintingPrintDocumentClassTopic.asp ,有興趣的網友可以參改一下。
下面是我改寫的printDocument_PrintPage:
private void printDocument_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) { float linesPerPage=0;//頁面的行号 float yPos=0;//列印字元串的縱向位置 int count=0;//行計數器 float leftMargin =e.MarginBounds.Left;//左邊距 float topMargin=e.MarginBounds.Top;//上邊距 string line=null;//行字元串 Color clr=richTextBox1.SelectionColor;//目前的列印顔色,在我這個程式沒有實作不同顔色列印 SolidBrush b =new SolidBrush(clr);//刷子 fnt=richTextBox1.SelectionFont;//目前的列印字型 linesPerPage=e.MarginBounds.Height/fnt.GetHeight(e.Graphics);//每頁可列印的行數 file://逐行循行列印一頁 while(count { yPos=topMargin+(count*fnt.GetHeight(e.Graphics)); e.Graphics.DrawString(line,fnt,b,leftMargin,yPos,new StringFormat()); count++; } file://如果該頁列印完成而line不為空說明還有沒完成的頁面,發出下一次的列印事件, file://在下一次的列印中lineReader會自動讀取上次沒有列印完的内容。lineReader可以記錄目前讀取的位置 if(line!=null) e.HasMorePages=true; else e.HasMorePages=false; } |
在這裡可以完成整個列印任務。把printDocument_PrintPage構造好後,就可以列印和列印預浏。
二、列印預浏對話框(PrintPreviewDialog)
列印預浏控件是用來顯示一個列印文檔在列印後的效果。在列印預浏對話框中包含有,列印、縮放、單頁或多頁、關閉等按鈕。對話框如下:
|
列印預浏對話框沒有太多的屬性,最後通過ShowDialog()調用。上面的實作代碼如下:
private void printPreviewBTN_Click(object sender, System.EventArgs e) { lineReader = new StringReader(richTextBox1.Text); try { PrintPreviewDialog printPreviewDialog1=new PrintPreviewDialog(); printPreviewDialog1.Document=printDocument; printPreviewDialog1.FormBorderStyle=FormBorderStyle.Fixed3D; printPreviewDialog1.ShowDialog(this); } catch(Exception excep) { MessageBox.Show(excep.Message, "列印出錯", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } |
很簡單的,隻要你把PrintDocument_PrintPage()寫好了,這裡就很容易了。
三、列印對話框(PrintDialog)
1、列印對話框(PrintDialog)隻要有以下屬性:
AllowPrintToFile | 禁止或使用"列印到檔案"複選框 |
AllowSelection | 禁止或使用"標明内容"單選框 |
AllowSomePages | 禁止或使用"頁"單選按鈕 |
Document | 從中擷取列印機設定的PrintDocument |
PrintToFile | 列印到檔案"複選框是否選中 |
ShowHelp | 控制是否顯示"幫助"按鈕 |
ShowNetWork | 控制是否顯示"網絡"按鈕 |
2、效果如下:
|
3、用如下代碼來實作:
private void printDialogBTN_Click(object sender, System.EventArgs e) { PrintDialog printDialog=new PrintDialog(); printDialog.Document=printDocument; if(printDialog.ShowDialog()!=DialogResult.Cancel) { try { printDocument.Print(); } catch(Exception ex) { MessageBox.Show(ex.Message); } } } |
到此,所有的對話框都講完了,頭都大了吧。
上述對話框,完全可以在vs.net的IDE環境中完成 ,這時為了說明問題,才分開一步步來講。
總結
在我們的教程,共講述了檔案對話框(FileDialog)、字型對話框(FontDialog)、,顔色對話框(ColorDialog)、列印預浏對話框(PrintPreviewDialog)、頁面設定(PrintDialog)、列印對話框(PrintDialog),這幾個對話框,其中檔案對話框(FileDialog)又有:打開檔案對話框(OpenFileDialog)、儲存檔案對話(SaveFileDialog)這兩個對話框。有了上述基礎,大家可以很容易的寫出一個簡單的記事本。