C# winform对话框用法大全收藏
?
對(duì)話框中我們常用了以下幾種:
1、文件對(duì)話框(FileDialog) 它又常用到兩個(gè):
打開(kāi)文件對(duì)話框(OpenFileDialog)
保存文件對(duì)話(SaveFileDialog)
2、字體對(duì)話框(FontDialog)
3、顏色對(duì)話框(ColorDialog)
4、打印預(yù)瀏對(duì)話框(PrintPreviewDialog)
5、頁(yè)面設(shè)置(PrintDialog)
6、打印對(duì)話框(PrintDialog)
還有更多,有時(shí)間的網(wǎng)友可以看看MSDN。下面我們一個(gè)個(gè)來(lái)介紹。在介紹的過(guò)程中我用到了一個(gè)自己開(kāi)發(fā)的類:File,主要是文件操作的。
?
文件對(duì)話框(FileDialog)
?
一、打開(kāi)文件對(duì)話框(OpenFileDialog)
?
1、 OpenFileDialog控件有以下基本屬性
?
InitialDirectory 對(duì)話框的初始目錄
Filter 要在對(duì)話框中顯示的文件篩選器,例如,"文本文件(*.txt)|*.txt|所有文件(*.*)||*.*"
FilterIndex 在對(duì)話框中選擇的文件篩選器的索引,如果選第一項(xiàng)就設(shè)為1
RestoreDirectory 控制對(duì)話框在關(guān)閉之前是否恢復(fù)當(dāng)前目錄
FileName 第一個(gè)在對(duì)話框中顯示的文件或最后一個(gè)選取的文件
Title 將顯示在對(duì)話框標(biāo)題欄中的字符
AddExtension 是否自動(dòng)添加默認(rèn)擴(kuò)展名
CheckPathExists 在對(duì)話框返回之前,檢查指定路徑是否存在
DefaultExt 默認(rèn)擴(kuò)展名
DereferenceLinks 在從對(duì)話框返回前是否取消引用快捷方式
ShowHelp 啟用"幫助"按鈕
ValiDateNames 控制對(duì)話框檢查文件名中是否不含有無(wú)效的字符或序列
?
2、 OpenFileDialog控件有以下常用事件
?
?
FileOk 當(dāng)用戶點(diǎn)擊"打開(kāi)"或"保存"按鈕時(shí)要處理的事件
HelpRequest 當(dāng)用戶點(diǎn)擊"幫助"按鈕時(shí)要處理的事件
?
3、OpenFileDialog的效果如下:
?
?
?
可以用以下代碼來(lái)實(shí)現(xiàn)上面這個(gè)對(duì)話框:
?
private void openFileDialogBTN_Click(o b je c t sender, System.EventArgs e){
OpenFileDialog openFileDialog=newOpenFileDialog();
openFileDialog.InitialDirectory="c:\\";//注意這里寫(xiě)路徑時(shí)要用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()這個(gè)類,是我在程序用來(lái)執(zhí)行文件操作,自己寫(xiě)的,在最后附了這個(gè)類的源碼。有興趣的網(wǎng)友可以自己分析。
?
二、保存文件對(duì)話框(SaveFileDialog)
?
保存文件對(duì)話框控件有兩種情況,一就是保存,二就是另存為,保存很簡(jiǎn)單,就是在文件已經(jīng)打開(kāi)的情況下的,再把文件寫(xiě)一篇,在這里我們主要講另存為的情況(SaveAs)。
?
1,SaveFileDialog控件的屬性
?
?
Filter 要在對(duì)話框中顯示的文件篩選器,例如,"文本文件(*.txt)|*.txt|所有文件(*.*)|*.*"
FilterIndex 在對(duì)話框中選擇的文件篩選器的索引,如果選第一項(xiàng)就設(shè)為1
RestoreDirectory 控制對(duì)話框在關(guān)閉之前是否恢復(fù)當(dāng)前目錄
AddExtension 是否自動(dòng)添加默認(rèn)擴(kuò)展名
CheckFileExists?
CheckPathExists 在對(duì)話框返回之前,檢查指定路徑是否存在
Container 控制在將要?jiǎng)?chuàng)建文件時(shí),是否提示用戶。只有在ValidateNames為真值時(shí),才適用。
DefaultExt 缺省擴(kuò)展名
DereferenceLinks 在從對(duì)話框返回前是否取消引用快捷方式
FileName 第一個(gè)在對(duì)話框中顯示的文件或最后一個(gè)選取的文件
InitialDirector 對(duì)話框的初始目錄
OverwritePrompt 控制在將要在改寫(xiě)現(xiàn)在文件時(shí)是否提示用戶,只有在ValidateNames為真值時(shí),才適用
ShowHelp 啟用"幫助"按鈕
Title 將顯示在對(duì)話框標(biāo)題欄中的字符
ValidateNames 控制對(duì)話框檢查文件名中是否不含有無(wú)效的字符或序列
?
2、SaveFileDialog事件如下:
?
?
?
FileOk 當(dāng)用戶點(diǎn)擊"打開(kāi)"或"保存"按鈕時(shí)要處理的事件
HelpRequest 當(dāng)用戶點(diǎn)擊"幫助"按鈕時(shí)要處理的事件
?
?
3、SaveFileDialog的效果如下:
?
?
?
4、用下例代碼可以實(shí)現(xiàn)
?
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);
}
}
}
其實(shí)這些都可以在VS.NET的IDE環(huán)境中直接完成,為了說(shuō)明問(wèn)題,我還是一條條列也來(lái)了。當(dāng)中用到了一個(gè)File的類庫(kù),下面是源程序:
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,"保存文件出錯(cuò)!");}
}
}
}
字體對(duì)話框(FontDialog)
?
在文字處理中,我們常用到字體,現(xiàn)在我們來(lái)做一個(gè)最常見(jiàn)的字體對(duì)話框。
?
一、字體對(duì)話框(FontDialog)常用屬性
?
ShowColor 控制是否顯示顏色選項(xiàng)
AllowScriptChange 是否顯示字體的字符集
Font 在對(duì)話框顯示的字體
AllowVerticalFonts 是否可選擇垂直字體
Color 在對(duì)話框中選擇的顏色
FontMustExist 當(dāng)字體不存在時(shí)是否顯示錯(cuò)誤
MaxSize 可選擇的最大字號(hào)
MinSize 可選擇的最小字號(hào)
ScriptsOnly 顯示排除OEM和Symbol字體
ShowApply 是否顯示"應(yīng)用"按鈕
ShowEffects 是否顯示下劃線、刪除線、字體顏色選項(xiàng)
ShowHelp 是否顯示"幫助"按鈕
?
二、字體對(duì)話框(FontDialog)的事件
?
Apply 當(dāng)點(diǎn)擊"應(yīng)用"按鈕時(shí)要處理的事件
HelpRequest 當(dāng)點(diǎn)擊"幫助"按鈕時(shí)要處理的事件
?
三、字體對(duì)話框(FontDialog)的效果
?
?
四、實(shí)現(xiàn)代碼
?
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;//將當(dāng)前選定的文字改變字體
}
}
上面代碼將選定的文本設(shè)置為當(dāng)前FontDialog對(duì)話框中的字體。
?
顏色對(duì)話框(ColorDialog)
?
顏色拾取框也是我們常見(jiàn)的對(duì)話框之一,下面我們來(lái)看看在C#中是如何操作顏色對(duì)話框的呢?
?
一、顏色對(duì)話框(ColorDialog)的常見(jiàn)屬性
?
?
AllowFullOpen 禁止和啟用"自定義顏色"按鈕
FullOpen 是否最先顯示對(duì)話框的"自定義顏色"部份
ShowHelp 是否顯示"幫助"按鈕
Color 在對(duì)話框中顯示的顏色
AnyColor 顯示可選擇任何顏色
CustomColors 是否顯示自定義顏色
SolidColorOnly 是否只能選擇純色
?
二、顏色對(duì)話框(ColorDialog)的效果如下:
?
?
?
三、實(shí)現(xiàn)代碼見(jiàn)下:
?
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;//初始化當(dāng)前文本框中的字體顏色,當(dāng)用戶在ColorDialog對(duì)話框中點(diǎn)擊"取消"按鈕
file://恢復(fù)原來(lái)的值
colorDialog.ShowDialog();
richTextBox1.SelectionColor=colorDialog.Color;
}
實(shí)現(xiàn)顏色對(duì)話框(ColorDialog)很容易吧,其實(shí)不只是顏色對(duì)話框,C#也是很容易的,只要用心去學(xué),都容易的。講完了顏色對(duì)話框(ColorDialog),我們來(lái)講打印和頁(yè)面設(shè)置.
?
頁(yè)面設(shè)置(PageSetupDialog)
?
其實(shí)頁(yè)面設(shè)置(PageSetupDialog)沒(méi)有太多的講,既然講到這里,我還是把PageSetupDialog中常用的屬性列出來(lái)吧
?
一、頁(yè)面設(shè)置(PageSetupDialog)常見(jiàn)屬性
AllowMargins 設(shè)置是否可以對(duì)邊距的編輯
AllowOrientation 是否可以使用"方向"單選框
AllowPaper 設(shè)置是否可以對(duì)紙張大小的編輯
AllowPrinter 設(shè)置是否可以使用"打印機(jī)"按鈕
Document 獲取打印機(jī)設(shè)置的PrintDocument
MinMargins 允許用戶選擇的最小邊距
?
二、面設(shè)置(PageSetupDialog)的效果如下
就這么簡(jiǎn)單啦,我們看看下面的吧,還有更重磅的東東呢?關(guān)于打印的。
?
打印預(yù)瀏及打印
?
打印是我們?cè)?span style="font-family:Calibri;">windows編程中常要用到的功能,在以前都是很麻煩工作,但在Microsoft .net Framework中打印是以組件提供給我們使用,不過(guò)還是點(diǎn)麻煩的,所以就專門寫(xiě)出來(lái),供大家參改。
?
一,在.net環(huán)境中,說(shuō)到打印,就不能不說(shuō)PrintDocumet這個(gè)類,PrintDocument屬于System.Drawing.Printing這個(gè)名字空間,PrintDocument這個(gè)類是實(shí)現(xiàn)打印的核心代碼。
?
如果要實(shí)現(xiàn)打印,就必需首先構(gòu)造PrintDocument對(duì)象添加打印事件,
printDocument.PrintPage+=newPrintPageEventHandler(this.printDocument_PrintPage)
打印其實(shí)也是調(diào)用Graphics類的方法進(jìn)行畫(huà)圖,下面這代碼是根據(jù)MSDN上提供的例程改寫(xiě)的。MSDN打印例程地址:
?
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemDrawingPrintingPrintDocumentClassTopic.asp,有興趣的網(wǎng)友可以參改一下。
?
下面是我改寫(xiě)的printDocument_PrintPage:
?
?
?
?
private void printDocument_PrintPage(o b je c t sender, System.Drawing.Printing.PrintPageEventArgs e)
{
float linesPerPage=0;//頁(yè)面的行號(hào)
float yPos=0;//打印字符串的縱向位置
int count=0;//行計(jì)數(shù)器
float leftMargin =e.MarginBounds.Left;//左邊距
float topMargin=e.MarginBounds.Top;//上邊距
string line=null;//行字符串
Color clr=richTextBox1.SelectionColor;//當(dāng)前的打印顏色,在我這個(gè)程序沒(méi)有實(shí)現(xiàn)不同顏色打印
SolidBrush b =new SolidBrush(clr);//刷子
fnt=richTextBox1.SelectionFont;//當(dāng)前的打印字體
linesPerPage=e.MarginBounds.Height/fnt.GetHeight(e.Graphics);//每頁(yè)可打印的行數(shù)
file://逐行循行打印一頁(yè)
while(count {
yPos=topMargin+(count*fnt.GetHeight(e.Graphics));
e.Graphics.DrawString(line,fnt,b,leftMargin,yPos,newStringFormat());
count++;
}
file://如果該頁(yè)打印完成而line不為空說(shuō)明還有沒(méi)完成的頁(yè)面,發(fā)出下一次的打印事件,
file://在下一次的打印中lineReader會(huì)自動(dòng)讀取上次沒(méi)有打印完的內(nèi)容。lineReader可以記錄當(dāng)前讀取的位置
if(line!=null)
e.HasMorePages=true;
else
e.HasMorePages=false;
}
在這里可以完成整個(gè)打印任務(wù)。把printDocument_PrintPage構(gòu)造好后,就可以打印和打印預(yù)瀏。
?
二、打印預(yù)瀏對(duì)話框(PrintPreviewDialog)
打印預(yù)瀏控件是用來(lái)顯示一個(gè)打印文檔在打印后的效果。在打印預(yù)瀏對(duì)話框中包含有,打印、縮放、單頁(yè)或多頁(yè)、關(guān)閉等按鈕。對(duì)話框如下:
?
?
打印預(yù)瀏對(duì)話框沒(méi)有太多的屬性,最后通過(guò)ShowDialog()調(diào)用。上面的實(shí)現(xiàn)代碼如下:
?
?
?
?
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, "打印出錯(cuò)",MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
}
很簡(jiǎn)單的,只要你把PrintDocument_PrintPage()寫(xiě)好了,這里就很容易了。
?
三、打印對(duì)話框(PrintDialog)
?
1、打印對(duì)話框(PrintDialog)只要有以下屬性:
?
?
AllowPrintToFile 禁止或使用"打印到文件"復(fù)選框
AllowSelection 禁止或使用"選定內(nèi)容"單選框
AllowSomePages 禁止或使用"頁(yè)"單選按鈕
Document 從中獲取打印機(jī)設(shè)置的PrintDocument
PrintToFile 打印到文件"復(fù)選框是否選中
ShowHelp 控制是否顯示"幫助"按鈕
ShowNetWork 控制是否顯示"網(wǎng)絡(luò)"按鈕
?
2、效果如下:
?
3、用如下代碼來(lái)實(shí)現(xiàn):
?
?
?
?
在我們的教程,共講述了文件對(duì)話框(FileDialog)、字體對(duì)話框(FontDialog)、,顏色對(duì)話框(ColorDialog)、打印預(yù)瀏對(duì)話框(PrintPreviewDialog)、頁(yè)面設(shè)置(PrintDialog)、打印對(duì)話框(PrintDialog),這幾個(gè)對(duì)話框,其中文件對(duì)話框(FileDialog)又有:打開(kāi)文件對(duì)話框(OpenFileDialog)、保存文件對(duì)話(SaveFi leDialog)這兩個(gè)對(duì)話框。有了上述基礎(chǔ),大家可以很容易的寫(xiě)出一個(gè)簡(jiǎn)單的記事本。
?
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);
}
}
}
總結(jié)
?
?
?
?
?
本文來(lái)自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/rxzgh/archive/2008/09/27/2988483.aspx
轉(zhuǎn)載于:https://www.cnblogs.com/java20130723/archive/2012/07/12/3211523.html
總結(jié)
以上是生活随笔為你收集整理的C# winform对话框用法大全收藏的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 英国的钱是中国多少钱啊?
- 下一篇: 录制caf 转 mp3