302Soft—302软件技术联盟

ASP.NET / C# / PowerBuilder 技术交流
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Visual C# 对话框全接触

Posted on 2007-01-20 23:21  寒夜听雨  阅读(4628)  评论(2编辑  收藏  举报

在编程中经常使用到的对话框大致有六个,他们分别是:"选择文件对话框"、"保存文件对话框"、"颜色对话框"、"打印预览对话框"、"打印机选择对话框"和"字体选择对话框"。那么在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.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" ;
  }
  }

九.总结:

对话框是编程过程中经常使用到的组件,希望上面的介绍对您在程序设计中使用这些对话框有所帮助。


Copyright(C) 2004-2007 302Soft-寒夜听雨 版权所有