C#对话框全接触
對話框中我們常用了以下幾種:
1、文件對話框(FileDialog) 它又常用到兩個:
打開文件對話框(OpenFileDialog)
保存文件對話(SaveFileDialog)
2、字體對話框(FontDialog)
3、顏色對話框(ColorDialog)
4、打印預瀏對話框(PrintPreviewDialog)
5、頁面設置(PrintDialog)
6、打印對話框(PrintDialog)
還有更多,有時間的網(wǎng)友可以看看MSDN。下面我們一個個來介紹。在介紹的過程中我用到了一個自己開發(fā)的類:File,主要是文件操作的。
文件對話框(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的效果如下:
可以用以下代碼來實現(xiàn)上面這個對話框:
private?void?openFileDialogBTN_Click(o?b?j?e?c?t?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()這個類,是我在程序用來執(zhí)行文件操作,自己寫的,在最后附了這個類的源碼。有興趣的網(wǎng)友可以自己分析。
二、保存文件對話框(SaveFileDialog)
保存文件對話框控件有兩種情況,一就是保存,二就是另存為,保存很簡單,就是在文件已經(jīng)打開的情況下的,再把文件寫一篇,在這里我們主要講另存為 的情況(SaveAs)。
1,SaveFileDialog控件的屬性
| Filter | 要在對話框中顯示的文件篩選器,例如,"文本文件(*.txt)|*.txt|所有文件(*.*)|*.*" |
| FilterIndex | 在對話框中選擇的文件篩選器的索引,如果選第一項就設為1 |
| RestoreDirectory | 控制對話框在關閉之前是否恢復當前目錄 |
| AddExtension | 是否自動添加默認擴展名 |
| CheckFileExists | |
| CheckPathExists | 在對話框返回之前,檢查指定路徑是否存在 |
| Container | 控制在將要創(chuàng)建文件時,是否提示用戶。只有在ValidateNames為真值時,才適用。 |
| DefaultExt | 缺省擴展名 |
| DereferenceLinks | 在從對話框返回前是否取消引用快捷方式 |
| FileName | 第一個在對話框中顯示的文件或最后一個選取的文件 |
| InitialDirector | 對話框的初始目錄 |
| OverwritePrompt | 控制在將要在改寫現(xiàn)在文件時是否提示用戶,只有在ValidateNames為真值時,才適用 |
| ShowHelp | 啟用"幫助"按鈕 |
| Title | 將顯示在對話框標題欄中的字符 |
| ValidateNames | 控制對話框檢查文件名中是否不含有無效的字符或序列 |
2、SaveFileDialog事件如下:
| FileOk | 當用戶點擊"打開"或"保存"按鈕時要處理的事件 |
| HelpRequest | 當用戶點擊"幫助"按鈕時要處理的事件 |
3、SaveFileDialog的效果如下:
4、用下例代碼可以實現(xiàn)
private?void?saveAsDialogBTN_Click(o?b?j?e?c?t?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環(huán)境中直接完成,為了說明問題,我還是一條條列也來了。當中用到了一個File的類庫,下面是源程序:
File.cs
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)
在文字處理中,我們常用到字體,現(xiàn)在我們來做一個最常見的字體對話框。
一、 字體對話框(FontDialog)常用屬性
| ShowColor | 控制是否顯示顏色選項 |
| AllowScriptChange | 是否顯示字體的字符集 |
| Font | 在對話框顯示的字體 |
| AllowVerticalFonts | 是否可選擇垂直字體 |
| Color | 在對話框中選擇的顏色 |
| FontMustExist | 當字體不存在時是否顯示錯誤 |
| MaxSize | 可選擇的最大字號 |
| MinSize | 可選擇的最小字號 |
| ScriptsOnly | 顯示排除OEM和Symbol字體 |
| ShowApply | 是否顯示"應用"按鈕 |
| ShowEffects | 是否顯示下劃線、刪除線、字體顏色選項 |
| ShowHelp | 是否顯示"幫助"按鈕 |
二、 字體對話框(FontDialog)的事件
| Apply | 當點擊"應用"按鈕時要處理的事件 |
| HelpRequest | 當點擊"幫助"按鈕時要處理的事件 |
三、 字體對話框(FontDialog)的效果
四、 實現(xiàn)代碼
private?void?fontDialogBTN_Click(o?b?j?e?c?t?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)的效果如下:
三、 實現(xiàn)代碼見下:
private?void?colorDialogBTN_Click(o?b?j?e?c?t?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;
}
實現(xiàn)顏色對話框(ColorDialog)很容易吧,其實不只是顏色對話框,C#也是很容易的,只要用心去學,都容易的。講完了顏色對話框(ColorDialog),我們 來講打印和頁面設置.
| 頁面設置(PageSetupDialog) 其實頁面設置(PageSetupDialog)沒有太多的講,既然講到這里,我還是把PageSetupDialog中常用的屬性列出來吧 一、頁面設置(PageSetupDialog)常見屬性
二、面設置(PageSetupDialog)的效果如下 就這么簡單啦,我們看看下面的吧,還有更重磅的東東呢?關于打印的。 打印預瀏及打印 一, 在.net環(huán)境中,說到打印,就不能不說PrintDocumet這個類,PrintDocument屬于System.Drawing.Printing這個名字空間,PrintDocument這個類是 實現(xiàn)打印的核心代碼。 ? private?void?printDocument_PrintPage(o?b?j?e?c?t?sender,?System.Drawing.Printing.PrintPageEventArgs?e){ float?linesPerPage=0;//頁面的行號 float?yPos=0;//打印字符串的縱向位置 int?count=0;//行計數(shù)器 float?leftMargin?=e.MarginBounds.Left;//左邊距 float?topMargin=e.MarginBounds.Top;//上邊距 string?line=null;//行字符串 Color?clr=richTextBox1.SelectionColor;//當前的打印顏色,在我這個程序沒有實現(xiàn)不同顏色打印 SolidBrush?b?=new?SolidBrush(clr);//刷子 fnt=richTextBox1.SelectionFont;//當前的打印字體 linesPerPage=e.MarginBounds.Height/fnt.GetHeight(e.Graphics);//每頁可打印的行數(shù) file://逐行循行打印一頁 while(count?{ yPos=topMargin+(count*fnt.GetHeight(e.Graphics)); e.Graphics.DrawString(line,fnt,b,leftMargin,yPos,new?StringFormat()); count++; } file://如果該頁打印完成而line不為空說明還有沒完成的頁面,發(fā)出下一次的打印事件, file://在下一次的打印中l(wèi)ineReader會自動讀取上次沒有打印完的內(nèi)容。lineReader可以記錄當前讀取的位置 if(line!=null) e.HasMorePages=true; else e.HasMorePages=false; } 在這里可以完成整個打印任務。把printDocument_PrintPage構(gòu)造好后,就可以打印和打印預瀏。 二、打印預瀏對話框(PrintPreviewDialog) 打印預瀏對話框沒有太多的屬性,最后通過ShowDialog()調(diào)用。上面的實現(xiàn)代碼如下: ? private?void?printPreviewBTN_Click(o?b?j?e?c?t?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)
2、效果如下: 3、用如下代碼來實現(xiàn): private?void?printDialogBTN_Click(o?b?j?e?c?t?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); } } } 總結(jié) |
轉(zhuǎn)載于:https://www.cnblogs.com/060218/archive/2009/11/20/1607071.html
總結(jié)
- 上一篇: 单网段DHCP服务器的架设
- 下一篇: C#winform listbox多选的