在编程中经常使用到的对话框大致有六个,他们分别是:"选择文件对话框"、"保存文件对话框"、"颜色对话框"、"打印预览对话框"、"打印机选择对话框"和"字体选择对话框"。那么在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 ) ; } |
此代码编译后的运行的界面如下:
在命名空间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 ( ) ; } |
编译后的运行界面如下:
在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 ( ) ; } |
此代码编译后的运行的界面如下:
在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 ) ; } } |
此代码编译后的运行的界面如下:
在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 ) ; } } |
此代码编译后的运行的界面如下:
在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 ( ) ; |
此代码编译后的运行的界面如下:
下图是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" ; } } |
九.总结:
对话框是编程过程中经常使用到的组件,希望上面的介绍对您在程序设计中使用这些对话框有所帮助。