在编程中经常使用到的对话框大致有六个,他们分别是:"选择文件对话框"、"保存文件对话框"、"颜色对话框"、"打印预览对话框"、"打印机选择对话框"和"字体选择对话框"。那么在C#是否也有相应的对话框?答案是存在的。那么在C#中如何使用?本文就来探讨一下这个问题。
一. 本文介绍的程序设计和运行的软件环境:
(1).微软公司视窗2000服务器版
(2)..Net FrameWork SDK Beta 2
二. 选择文件对话框:
在命名空间System.Windows.Froms中封装了一个类(Class)"OpenFileDialog",在C#中的选择文件对话框就是继承这个类。下列代码是创建一个此类的对象:
OpenFileDialog openFileDialog1 = new OpenFileDialog ( ) ;(1).选择文件对话框一些常用的属性:
选择文件对话框的常用属性如下表:
属性名称 作用 
 InitialDirectory 设置在对话框中显示的初始化目录 
 Filter 设定对话框中过滤文件字符串 
 FilterIndex 设定显示的过滤字符串的索引 
 RestoreDirectory 布尔型,设定是否重新回到关闭此对话框时候的当前目录 
 FileName 设定在对话框中选择的文件名称 
 ShowHelp 设定在对话框中是否显示"帮助"按钮 
 Title 设定对话框的标题 
(2).创建一个功能相对完整的选择文件对话框的对象:
//定义一个"打开文件对话框"
 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 ) ;
   }此代码编译后的运行的界面如下:

 图01:C#创建一个选择文件对话框对象
三. 选择字体对话框:
在命名空间System.Windows.Froms中封装了一个类(Class)"FontDialog",在C#中的通过继承此类得到字体对话框的。下列代码是创建一个此类的对象:
FontDialog fontDialog1 = new FontDialog ( ) ;(1).字体对话框的一些常用的属性:
属性名称 作用 
 ShowColor 是否在对话框中显示"颜色"选项 
 AllowScriptChange 是否允许使用者更改"字符集"选择 
 Font 选择后的字体 
(2).创建一个功能相对完整的字体对话框的对象:
FontDialog fontDialog1 = new FontDialog ( ) ;
   fontDialog1.ShowColor = true ;
   fontDialog1.AllowScriptChange = false ;
   if ( fontDialog1.ShowDialog ( ) != DialogResult.Cancel )
   {
   fnt = fontDialog1.Font ;
   showInfo ( ) ;
   }编译后的运行界面如下:

 图02:C#创建一个字体对话框对象
四.颜色选择对话框:
在C#中创建一个颜色对话框是通过继承命名空间System.Windows.Froms中类(Class)"ColorDialog"来实现的。下列代码是创建一个此类的对象:
ColorDialog ColorDialog1 = new ColorDialog ( ) ;(1). 颜色选择对话框一些常用的属性:
颜色选择对话框的常用属性如下表:
属性名称 作用 
 AllowFullOpen 设定用户是否可以使用自定义颜色 
 ShowHelp 设定在对话框中是否显示"帮助"按钮 
 Color 颜色对话框选择的颜色 
(2).创建一个功能相对完整的颜色选择对话框的对象:
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 ( ) ;
   }此代码编译后的运行的界面如下:

 图03:C#创建一个颜色对话框对象
五.保存文件对话框:
在C#中创建一个保存文件对话框是通过继承命名空间System.Windows.Froms中类(Class)"SaveFileDialog"来实现的。下列代码是创建一个此类的对象:
SaveFileDialog saveFileDialog1 = new SaveFileDialog ( ) ;(1). 保存文件对话框一些常用的属性:
保存文件对话框的常用属性如下表:
属性名称 作用 
 InitialDirectory 设置在对话框中显示的初始化目录 
 Filter 设定对话框中过滤文件字符串 
 FilterIndex 设定显示的过滤字符串的索引 
 RestoreDirectory 布尔型,设定是否重新回到关闭此对话框时候的当前目录 
 FileName 设定在对话框中选择的文件名称 
 ShowHelp 设定在对话框中是否显示"帮助"按钮 
 Title 设定对话框的标题 
(2).创建一个功能相对完整的保存文件对话框的对象:
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 ) ;
   }
   }此代码编译后的运行的界面如下:

 图04:C#创建一个保存文件对话框对象
六.设置打印机对话框:
在C#中创建一个设置打印机对话框是通过继承命名空间System.Windows.Froms中类(Class)"PrintDialog"来实现的。下列代码是创建一个此类的对象:
PrintDialog PrintDialog1 = new PrintDialog ( ) ;
(1). 设置打印机对话框一些常用的属性:
设置打印机对话框的常用属性如下表:
属性名称 作用 
 AllowSelection 设定是否显示"从…到…页"这个打印选项 
 AllowPrintToFile 设定在对话框中"打印到文件"选项是否激活 
 Document 设定要打印的文档 
 PrintToFile 设定是否选中"打印到文件"选项 
 ShowNetwork 设定在对话框是否显示"网络"这个按钮 
 ShowHelp 设定在对话框中是否显示"帮助"按钮 
(2).创建一个功能相对完整的设置打印机对话框的对象:
//创建一个设置打印机对话框对象
 PrintDialog PrintDialog1 = new PrintDialog ( ) ;
   //首先要新建一个打印文档,
   pd = new PrintDocument ( ) ;
   PrintDialog1.ShowNetwork=false;
   
   PrintDialog1.PrintToFile = false ;
   PrintDialog1.Document = pd ;
   if ( PrintDialog1.ShowDialog ( ) != DialogResult.Cancel )
   {
   try
   {
   pd.Print ( ) ;
   }
   catch ( Exception ex )
   {
   MessageBox.Show ( ex.Message ) ;
   }
   }此代码编译后的运行的界面如下:

 图05:C#创建一个设置打印机对话框对象
七:打印预览对话框:
在C#中创建一个打印预览对话框是通过继承命名空间System.Windows.Froms中类(Class)"PrintPreviewDialog"来实现的。下列代码是创建一个此类的对象:
PrintPreviewDialog printPreviewDialog1 = new PrintPreviewDialog ( ) ;(1). 打印预览对话框一些常用的属性:
设置打印机对话框的常用属性如下表:
属性名称 作用 
 FormBorderStyle 设定边距类型 
 Document 设定要打印的文档 
(2).创建一个可以打印一个空文档的打印预览对话框:
//创建一个打印文档
 pd = new PrintDocument ( ) ;
 //创建一个打印预览对话框对象
 PrintPreviewDialog printPreviewDialog1 = new PrintPreviewDialog ( ) ;
 printPreviewDialog1.Document = this.pd ;
 printPreviewDialog1.FormBorderStyle = FormBorderStyle.Fixed3D ;
 printPreviewDialog1.ShowDialog ( ) ;此代码编译后的运行的界面如下:

 图06:C#创建一个打印空文档的打印预览对话框对象
八.用C#例子编写一个综合六个对话框的例子(dialog.cs):
下图是dialog.cs编译后运行的界面:

 图07:用C#编写的组合六个对话框程序的运行界面

 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" ;
   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" ;
   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" ;
   lblCaption.Size = new Size ( 246 , 19 ) ;
   lblCaption.TabIndex = 2 ;
   lblCaption.Text = "选择对话框后的输出结果:" ;
   
   btnOpenFileDialog.Location = new Point ( 20 , 28 ) ;
    = "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" ;
   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" ;
   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" ;
   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" ;
   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 ;
    = "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" ;
   }
   }九.总结:
对话框是编程过程中经常使用到的组件,希望上面的介绍对您在程序设计中使用这些对话框有所帮助。 
  
 
 
                     
            
        













 
                    

 
                 
                    