对话框中我们常用了以下几种:
1、文件对话框(FileDialog) 它又常用到两个:
打开文件对话框(OpenFileDialog)
保存文件对话(SaveFileDialog)
2、字体对话框(FontDialog)
3、颜色对话框(ColorDialog)
4、打印预浏对话框(PrintPreviewDialog)
5、页面设置(PrintDialog)
6、打印对话框(PrintDialog)
文件对话框(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 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()这个类,是我在程序用来执行文件操作,自己写的,在最后附了这个类的源码。有兴趣的网友可以自己分析。
二、保存文件对话框(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 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环境中直接完成,为了说明问题,我还是一条条列也来了。当中用到了一个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(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)的效果如下:

三、 实现代码见下:
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;
}
实现颜色对话框(ColorDialog)很容易吧,其实不只是颜色对话框,C#也是很容易的,只要用心去学,都容易的。讲完了颜色对话框(ColorDialog),我们 来讲打印和页面设置.
| 页面设置(PageSetupDialog) 其实页面设置(PageSetupDialog)没有太多的讲,既然讲到这里,我还是把PageSetupDialog中常用的属性列出来吧 一、页面设置(PageSetupDialog)常见属性
二、面设置(PageSetupDialog)的效果如下 打印预浏及打印 一, 在.net环境中,说到打印,就不能不说PrintDocumet这个类,PrintDocument属于System.Drawing.Printing这个名字空间,PrintDocument这个类是 实现打印的核心代码。
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;//行计数器 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)
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、效果如下:
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); } } }总结 |
下图是dialog.cs编译后运行的界面:


dialog.cs的源代码如下:
| using System ; using System.IO ; using System.Text ; using System.Drawing ; using System.Drawing.Printing ; using System.Collections ; using System.ComponentModel ; using System.Windows.Forms ; using System.Data ; public class Form1 : Form { private Button btnOpenFileDialog ; private Button btnSaveFileDialog ; private Button btnColorDialog ; private Button btnFontDialog ; private Button btnPrintDialog ; private Label lblOutputData ; private Label lblCaption ; private Font fnt ; private Color clr ; private string fName ; private StreamReader sr ; private PrintDocument pd ; private Button btnPrintPreview ; private System.ComponentModel.Container components = null ; public Form1 ( ) { //初始化窗体中的各个组件 InitializeComponent ( ) ; } //清除程序中使用过的资源 protected override void Dispose ( bool disposing ) { if ( disposing ) { if ( components != null ) { components.Dispose ( ) ; } } base.Dispose ( disposing ) ; } private void InitializeComponent ( ) { btnColorDialog = new Button ( ) ; btnFontDialog = new Button ( ) ; lblCaption = new Label ( ) ; btnOpenFileDialog = new Button ( ) ; btnSaveFileDialog = new Button ( ) ; btnPrintPreview = new Button ( ) ; btnPrintDialog = new Button ( ) ; lblOutputData = new Label ( ) ; SuspendLayout ( ) ; btnColorDialog.Location = new Point ( 20 , 102 ) ; btnColorDialog.Name = "btnColorDialog" ; btnColorDialog.Size = new Size ( 140 , 28 ) ; btnColorDialog.TabIndex = 2 ; btnColorDialog.Text = "颜色对话框" ; btnColorDialog.Click += new System.EventHandler ( btnColorDialog_Click ) ; btnFontDialog.Location = new Point ( 20 , 65 ) ; btnFontDialog.Name = "btnFontDialog" ; btnFontDialog.Size = new Size ( 140 , 28 ) ; btnFontDialog.TabIndex = 1 ; btnFontDialog.Text = "字体对话框" ; btnFontDialog.Click += new System.EventHandler ( btnFontDialog_Click ) ; lblCaption.Font = new System.Drawing.Font ("宋体" , 10.5F , System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ( ( System.Byte ) ( 134 ) ) ) ; lblCaption.Location = new Point ( 184 , 8 ) ; lblCaption.Name = "lblCaption" ; lblCaption.Size = new Size ( 246 , 19 ) ; lblCaption.TabIndex = 2 ; lblCaption.Text = "选择对话框后的输出结果:" ; btnOpenFileDialog.Location = new Point ( 20 , 28 ) ; btnOpenFileDialog.Name = "btnOpenFileDialog" ; btnOpenFileDialog.Size = new Size ( 140 , 28 ) ; btnOpenFileDialog.TabIndex = 0 ; btnOpenFileDialog.Text = "打开文件对话框" ; btnOpenFileDialog.Click += new System.EventHandler ( btnOpenFileDialog_Click ) ; btnSaveFileDialog.Location = new Point ( 20 , 213 ) ; btnSaveFileDialog.Name = "btnSaveFileDialog" ; btnSaveFileDialog.Size = new Size ( 140 , 28 ) ; btnSaveFileDialog.TabIndex = 5 ; btnSaveFileDialog.Text = "保存文件对话框" ; btnSaveFileDialog.Click += new System.EventHandler ( btnSaveFileDialog_Click ) ; btnPrintPreview.Location = new Point ( 20 , 139 ) ; btnPrintPreview.Name = "btnPrintPreview" ; btnPrintPreview.Size = new Size ( 140 , 28 ) ; btnPrintPreview.TabIndex = 3 ; btnPrintPreview.Text = "打印预览对话框" ; btnPrintPreview.Click += new System.EventHandler ( btnPrintPreview_Click ) ; btnPrintDialog.Location = new Point ( 20 , 176 ) ; btnPrintDialog.Name = "btnPrintDialog" ; btnPrintDialog.Size = new Size ( 140 , 28 ) ; btnPrintDialog.TabIndex = 4 ; btnPrintDialog.Text = "打印对话框" ; btnPrintDialog.Click += new System.EventHandler ( btnPrintDialog_Click ) ; lblOutputData.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D ; lblOutputData.Location = new Point ( 176 , 28 ) ; lblOutputData.Name = "lblOutputData" ; lblOutputData.Size = new Size ( 280 , 213 ) ; lblOutputData.TabIndex = 1 ; this.AutoScaleBaseSize = new Size ( 6 , 14 ) ; this.ClientSize = new Size ( 456 , 264 ) ; this.Controls.Add ( lblCaption ) ; this.Controls.Add ( btnPrintPreview ) ; this.Controls.Add ( lblOutputData ) ; this.Controls.Add ( btnSaveFileDialog ) ; this.Controls.Add ( btnOpenFileDialog ) ; this.Controls.Add ( btnColorDialog ) ; this.Controls.Add ( btnFontDialog ) ; this.Controls.Add ( btnPrintDialog ) ; this.MaximizeBox = false ; this.MinimizeBox = false ; this.Name = "Form1" ; this.Text = "全面掌握C#中的对话框组件!" ; this.ResumeLayout ( false ) ; } static void Main ( ) { Application.Run ( new Form1 ( ) ) ; } private void btnOpenFileDialog_Click ( object sender , System.EventArgs e ) { //定义一个"打开文件对话框" OpenFileDialog openFileDialog1 = new OpenFileDialog ( ) ; //定义此对话框的初始化目录 openFileDialog1.InitialDirectory = "c:\\" ; //定义此对话框文件过滤类型 openFileDialog1.Filter= "txt files(*.txt)|*.txt|All files (*.*)|*.*" ; //此对话框缺省过滤类型为第二个 openFileDialog1.FilterIndex = 2 ; openFileDialog1.RestoreDirectory = true ; if ( openFileDialog1.ShowDialog ( ) == DialogResult.OK ) { fName = openFileDialog1.FileName ; showInfo ( ) ; sr = new StreamReader ( fName ) ; } } //另存文件对话框 private void btnSaveFileDialog_Click ( object sender , System.EventArgs e ) { Stream myStream ; SaveFileDialog saveFileDialog1 = new SaveFileDialog ( ) ; saveFileDialog1.Filter= " txt files(*.txt)|*.txt|All files(*.*)|*.*" ; saveFileDialog1.FilterIndex = 2 ; saveFileDialog1.RestoreDirectory = true ; if ( saveFileDialog1.ShowDialog ( ) == DialogResult.OK ) { if ( ( myStream = saveFileDialog1.OpenFile ( ) ) != null ) { //设定"sr"对象的指针指向读取文件流的开始位置 sr.BaseStream.Seek ( 0 , SeekOrigin.Begin ) ; int i ; //判断"sr"中的指针是否指向文件流的结尾位置 while ( ( i = sr.BaseStream.ReadByte ( ) ) != -1 ) { //不断的往文件中写入字节 myStream.WriteByte ( ( byte ) i ) ; } myStream.Close ( ) ; sr.BaseStream.Seek ( 0 , SeekOrigin.Begin ) ; } } } //颜色选择对话框 private void btnColorDialog_Click ( object sender , System.EventArgs e ) { ColorDialog ColorDialog1 = new ColorDialog ( ) ; ColorDialog1.AllowFullOpen = true ; ColorDialog1.FullOpen = true ; //设定此颜色对话框存在"帮助"按钮,缺省是没有的 ColorDialog1.ShowHelp = true ; // 设定此颜色对话框的初始颜色,所以如果在对话框中选择"取消",则此对话框会重新此颜色 ColorDialog1.Color = Color.DarkBlue ; if ( ColorDialog1.ShowDialog ( ) != DialogResult.Cancel ) { clr = ColorDialog1.Color ; showInfo ( ) ; } } //打开字体对话框 private void btnFontDialog_Click ( object sender , System.EventArgs e ) { FontDialog fontDialog1 = new FontDialog ( ) ; fontDialog1.ShowColor = true ; fontDialog1.AllowScriptChange = true ; fontDialog1.ShowColor = false ; if ( fontDialog1.ShowDialog ( ) != DialogResult.Cancel ) { fnt = fontDialog1.Font ; showInfo ( ) ; } } //打印机对话框 private void btnPrintDialog_Click ( object sender , System.EventArgs e ) { PrintDialog PrintDialog1 = new PrintDialog ( ) ; pd = new PrintDocument ( ) ; PrintDialog1.PrintToFile = false ; PrintDialog1.Document = pd ; if ( PrintDialog1.ShowDialog ( ) != DialogResult.Cancel ) { try { pd.Print ( ) ; } catch ( Exception ex ) { MessageBox.Show ( ex.Message ) ; } } } //打印预览对话框 private void btnPrintPreview_Click ( object sender , System.EventArgs e ) { //创建一个新的文档 pd = new PrintDocument ( ) ; //创建一个打印预览对话框 PrintPreviewDialog printPreviewDialog1 = new PrintPreviewDialog ( ) ; printPreviewDialog1.Document = this.pd ; printPreviewDialog1.FormBorderStyle = FormBorderStyle.Fixed3D ; printPreviewDialog1.ShowDialog ( ) ; } //显示各个对话框选择后的信息 private void showInfo ( ) { lblOutputData.Text = "选择文件: " + fName.ToString ( ) + "\n\r\n\r" ; lblOutputData.Text = lblOutputData.Text + "选择颜色: " + clr.ToString ( ) + "\n\r\n\r" ; lblOutputData.Text = lblOutputData.Text + "选择字体:" + fnt + "\n\r\n\r" ; } } |
九.总结:
对话框是编程过程中经常使用到的组件,希望上面的介绍对您在程序设计中使用这些对话框有所帮助。



就这么简单啦,我们看看下面的吧,还有更重磅的东东呢?关于打印的。
打印预浏对话框没有太多的属性,最后通过ShowDialog()调用。上面的实现代码如下:
3、用如下代码来实现:
浙公网安备 33010602011771号