?
對話框中我們常用了以下幾種:
1、文件對話框(FileDialog) 它又常用到兩個:
打開文件對話框(OpenFileDialog)
保存文件對話(SaveFileDialog)
2、字體對話框(FontDialog)
3、顏色對話框(ColorDialog)
4、打印預瀏對話框(PrintPreviewDialog)
5、頁面設置(PrintDialog)
6、打印對話框(PrintDialog)
還有更多,有時間的網友可以看看MSDN。下面我們一個個來介紹。在介紹的過程中我用到了一個自己開發的類: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的效果如下:
?
?
?
可以用以下代碼來實現上面這個對話框:
?
private void openFileDialogBTN_Click(o b je c t sender, System.EventArgs e){
OpenFileDialog openFileDialog=newOpenFileDialog();
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(o b j ec t sender, System.EventArgs e)
{
SaveFileDialog saveFileDialog=newSaveFileDialog();
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=newStreamReader(fileName,Encoding.Default);
string result=sr.ReadToEnd();
sr.Close();
return result;
}
catch(Exceptione){MessageBox.Show(e.Message);}
return null;
}
?
public void WriteFile(string str)
{
try
{
StreamWriter sw=newStreamWriter(fileName,false,Encoding.Default);
sw.Write(str);
sw.Close();
}
catch(Exceptione){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(o b j e ct 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(o b j e ct 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+=newPrintPageEventHandler(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(o b je c t 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,newStringFormat());
count++;
}
file://如果該頁打印完成而line不為空說明還有沒完成的頁面,發出下一次的打印事件,
file://在下一次的打印中lineReader會自動讀取上次沒有打印完的內容。lineReader可以記錄當前讀取的位置
if(line!=null)
e.HasMorePages=true;
else
e.HasMorePages=false;
}
在這里可以完成整個打印任務。把printDocument_PrintPage構造好后,就可以打印和打印預瀏。
?
二、打印預瀏對話框(PrintPreviewDialog)
打印預瀏控件是用來顯示一個打印文檔在打印后的效果。在打印預瀏對話框中包含有,打印、縮放、單頁或多頁、關閉等按鈕。對話框如下:
?
?
打印預瀏對話框沒有太多的屬性,最后通過ShowDialog()調用。上面的實現代碼如下:
?
?
?
?
private void printPreviewBTN_Click(o b j ec t sender, System.EventArgs e)
{
lineReader = new StringReader(richTextBox1.Text);
try
{
PrintPreviewDialog printPreviewDialog1=newPrintPreviewDialog();
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、用如下代碼來實現:
?
?
?
?
在我們的教程,共講述了文件對話框(FileDialog)、字體對話框(FontDialog)、,顏色對話框(ColorDialog)、打印預瀏對話框(PrintPreviewDialog)、頁面設置(PrintDialog)、打印對話框(PrintDialog),這幾個對話框,其中文件對話框(FileDialog)又有:打開文件對話框(OpenFileDialog)、保存文件對話(SaveFi leDialog)這兩個對話框。有了上述基礎,大家可以很容易的寫出一個簡單的記事本。
?
private void printDialogBTN_Click(o b j e ct 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);
}
}
}
總結
?
?
?
?
?
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/rxzgh/archive/2008/09/27/2988483.aspx