对话框Dialog总结

来自:http://www.cnblogs.com/salonliudong/archive/2006/12/06/584622.html

这个人的blog非常不错,一定要点进行学习学习别的哦!  

 

对话框中我们常用了以下几种:

  1、文件对话框(FileDialog) 它又常用到两个:

   打开文件对话框(OpenFileDialog)

    保存文件对话(SaveFileDialog)

  2、字体对话框(FontDialog)

   3、颜色对话框(ColorDialog)

  4、 打印预浏对话框(PrintPreviewDialog)

  5、页面设置(PrintDialog)

   6、打印对话框(PrintDialog)
  还有更多,有时间的网友可以看看 MSDN。下面我们一个个来介绍。在介绍的过程中我用到了一个自己开发的类:File,主要是文件操作的。

  文件对话框(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(object 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(object 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(object 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(object 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),我 们来讲打印和页面设置.

  三、 实现代码见下:

private void colorDialogBTN_Click(object 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)常 见属性

AllowMargins

设置是否可以对边距的编辑

AllowOrientation

是否可以使用"方向"单选 框

AllowPaper

设置是否可以对纸张大小的编辑

AllowPrinter

设置是否可以使用"打印机"按 钮

Document

获取打印机设置的PrintDocument

MinMargins

允许用户选择的最小边距

  二、面设置(PageSetupDialog)的效果如下

  就这么简单啦,我们看看下面的吧,还有更重磅的东东呢?关于打印的。

  打印预浏及打印

  打 印是我们在windows编程中常要用到的功能,在以前都是很麻烦工作,但在Microsoft .net Framework中打印是以组件提供给我们使用,不过还是点麻烦的,所以就专门写出来,供大家参改。

  一, 在.net环境中,说到打印,就不能不说PrintDocumet这 个类,PrintDocument属于System.Drawing.Printing这个名字空 间,PrintDocument这个类是实现打印的核心代码。

  如果要实现打印,就 必需首先构造PrintDocument对象添加打印事件,
printDocument.PrintPage+=new PrintPageEventHandler(this.printDocument_PrintPage)
打印其实也是调用Graphics类 的方法进行画图,下面这代码是根据MSDN上提供的例程改写的。MSDN打 印例程地址:

  http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemDrawingPrintingPrintDocumentClassTopic.asp ,有兴趣的网友可以参改一下。

  下面是我改写的printDocument_PrintPage:

private void printDocument_PrintPage(object 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<LINESPERPAGE&&((LINE=LINEREADER.READLINE())!=NULL))
{
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)

   打印预浏控件是用来显示一个打印文档在打印后的效果。在打印预浏对话框中包含有,打印、缩放、单页或多页、关闭等按钮。对话框如下:

  打印预浏对话框没有太多的属性,最后通过ShowDialog()调用。上 面的实现代码如下:

private void printPreviewBTN_Click(object 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)

   1、打印对话框(PrintDialog)只要有以下属性:

AllowPrintToFile

禁止或使用"打印到文件"复 选框

AllowSelection

禁止或使用"选定内容"单 选框

AllowSomePages

禁止或使用"页"单选按钮

Document

从中获取打印机设置的PrintDocument

PrintToFile

打印到文件"复选框是否选中

ShowHelp

控制是否显示"帮助"按钮

ShowNetWork

控制是否显示"网络"按钮

  2、效果如下:

  3、用如下代码来实现:

private void printDialogBTN_Click(object 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);
}
}
}

  到此,所有的对话框都讲完了,头都大了吧。

  上述对话 框,完全可以在vs.net的IDE环境中完成,这时为了说明问题,才分开一步步来讲。

   总结

  在我们的教程,共讲述了文件对话框(FileDialog)、 字体对话框(FontDialog)、,颜色对话框(ColorDialog)、 打印预浏对话框(PrintPreviewDialog)、页面设置(PrintDialog)、 打印对话框(PrintDialog),这几个对话框,其中文件对话框(FileDialog)又 有:打开文件对话框(OpenFileDialog)、保存文件对话(SaveFileDialog)这 两个对话框。有了上述基础,大家可以很容易的写出一个简单的记事本。

你可能感兴趣的:(对话框Dialog总结)