2012年9月24日 星期一
c# Dialog全介紹
Author: Mango
|
at:凌晨3:06
|
Category :
.NET,
C#,
Framework 3.5,
visual studio 2008
|
Dialog全介紹
轉貼自:http://www.ziliaonet.com/tech/softdev/CJ/200604/53029.html
對話方塊中我們常用了以下幾種:
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 當使用者點擊"?明"按鈕時要處理的事件
可以用以下代碼來實現上面這個對話方塊:
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 當使用者點擊"?明"按鈕時要處理的事件
用下例代碼可以實現
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 當點擊"幫助"按鈕時要處理的事件
實現代碼
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 是否只能選擇純色
實現代碼見下:
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 允許用戶選擇的最小邊距
就這麼簡單啦,我們看看下面的吧,還有更重磅的東東呢?關於列印的。
列印預瀏及列印
列印是我們在windows程式設計中常要用到的功能,在以前都是很麻煩工作,但在Microsoft .net Framework中列印是以元件提供給我們使用,不過還是點麻煩的,所以就專門寫出來,供大家參改。
一, 在.net環境中,說到列印,就不能不說PrintDocumet這個類,PrintDocument屬於System.Drawing.Printing這個名字空間,PrintDocument這個類是實現列印的核心代碼。
如果要實現列印,就必需首先構造PrintDocument物件添加列印事件,
printDocument.PrintPage+=new PrintPageEventHandler(this.printDocument_PrintPage)
列印其實也是調用Graphics類的方法進行畫圖,下面這代碼是根據MSDN上提供的常式改寫的。MSDN列印常式位址:
microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemDrawingPrintingPrintDocumentClassTopic.asp>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 控制是否顯示"網路"按鈕
用如下代碼來實現:
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)這兩個對話方塊。有了上述基礎,大家可以很容易的寫出一個簡單的記事本。
訂閱:
張貼留言 (Atom)
0 意見:
張貼留言