20编程21编程爱好者22vb编程,23数控编程24编程中国25编程论坛26编程语言27游戏编程28编程软件下载29编程工具30socket编程31网络编程32编程器33c语言编程,34flash编程35编程软件36数控车床编程37windows编程38编程入门,39windows核心编程40cnc编程41vc 编程,42linux 编程43asp编程44vb编程实例45串口编程46手机编程47编程教程48plc编程,49单片机编程50vc 网络编程51excel编程,52unix网络编程53编程学习,54编程之道55数据库编程56单片机编程器57黑客编程58计算机编程59网页编程60嵌入式编程,61编程高手箴言62flash编程教程63vfp编程64windows网络编程,65编程基础66c语言编程实例67c语言编程软件68vf编程69shell编程,70vb数据库编程71matlab编程,72c语言编程工具73编程思想74php编程,75c编程76jsp编程77电脑编程技巧与维护,78三菱plc编程软件,79vb编程软件下载80pb编程81数控编程实例82asp编程工具,83c专家编程,84win32编程85数控铣床编程86asp.net高级编程,,87vc 数据库编程88vba编程89jsp高级编程90c语言编程宝典,91unix环境高级编程;92编程珠玑93delphi编程94delphi数据库编程95vb编程教程96单片机编程软件
1编程爱好者网站2vb编程网站,3电子商务网站编程4游戏编程网站5最大的编程网站6网站编程软件7可编程逻辑中文网站8网站 编程 语言9网站编程 数据库,10jsp网站编程11asp编程网站12网站编程电子书13好的编程网站,14c语言编程网站15编程门户网站16如何学习网站编程17百度网站的编程语言18vb编程乐园网站指南19wince 编程网站
1asp.net2asp教程,3asp源码4asp免费空间5asp论坛6asp代码7asp源代码8asp下载,9asp源码下载10asp木马11asp.net教程12asp学习13什么是asp14asp空间,15admin.asp dir16asp程序17asp教程下载18asp.net 2.019asp整站程序,20asp文件21十天学会asp22asp入门23asp源程序24asp实例25asp函数26asp服务器27asp.net论坛28asp id,29asp整站下载30asp网站31asp论坛下载32asp源代码下载,33asp整站34asp技术35asp access36asp.net源码37asp简介38asp免费空间申请39asp.net下载,40asp留言板41asp sql42asp 数据库43asp站长助手44asp连接数据库45asp留言本,46asp.net教程下载47asp分页48asp格式49asp论坛程序50asp.net源代码51asp软件52asp模板53asp session54asp语法,55如何打开asp文件56asp解密57asp编程58asp.net实例,59asp实例教程60asp程序下载61asp计数器62asp.net入门,63asp运行环境64asp基础教程65apache asp66asp入门教程,67asp编辑器68asp组件69asp连接access70conn.asp71asp书籍,72asp论文73asp工具74asp文件上传75asp探针76asp原代码下载77asp include78user wantpws.asp79asp split,80asp fso81asp网页制作82printpage.asp83什么是asp.net,84index.asp85asp.net datagrid86asp基础87asp replace88asp代码下载89asp新闻系统
1php论坛2免费php空间,3php下载4php源码5php mysql6php教程7php文件8php空间9apache php10什么是php11apache php mysql12php学习13php论坛下载14iis php15php cms16php入门17php blog18php手册,19php代码20php整站程序21php session22php安装23php源码下载24php配置25php源代码26php cookie27php网站28iis php mysql29php编程30php留言板31php探针32php注入33php.ini34php运行环境35index.php36php教程下载,37php论坛程序38php 文件上传39php服务器40php环境41php 函数;42php格式43php编辑器44php editor45如何打开php文件46php access47十天学会php48php模板49php xml;50php程序51php留言本52php文件怎么打开53php技术54ajax php55php简介56php注入工具57打开php文件58php语言59php mail;60php软件;61免费php mysql空间62php self63php 数组.64php分页,65php nuke66php阅读器67免费php空间申请68国外免费php空间69php程序下载70php 正则表达式71asp php,72php网站管理系统73php程序设计74php是什么文件75php 实例76php 开发工具77php 验证码78php官方网站79php学习资料
1jsp教程2jsp源码3jsp论坛4什么是jsp5jsp源代码6jsp空间7jsp学习8jsp文件9jsp mysql,10jsp入门11jsp连接数据库12jsp技术13eclipse jsp14jsp分页15jsp源代码下载16jsp access17jsp教程下载18jsp开发工具,19jsp代码20jsp简介21jsp环境配置22jsp连接mysql,23jsp实例24免费jsp空间25jsp配置26jsp session,27jsp运行环境28jsp下载29jsp网站30jsp include31jsp编程,32jsp介绍33jsp 数据库34jsp设计35jsp servlet36jsp标签37jsp应用开发详解38jsp 中文39jsp oracle40jsp论文41jsp 文件上传,42jsp高级编程43jsp源码下载44jsp 乱码45jsp开发46jsp分页显示47jsp sql48jsp连接sql49jsp 页面跳转50jsp request51eclipse开发jsp52iis jsp53jsp开发环境54jsp sqlserver,55jsp cookie56jsp服务器57jsp连接access58jsp毕业论文59jsp新闻发布系统60jsp留言板61jsp 电子书62jsp forward63jsp中文网64tomcat jsp65jsp语法66jsp留言本67asp jsp,68jsp import69jsp源程序70jsp基础71jsp毕业设计,72jsp格式73jsp 中文乱码,74jsp开发实例75jsp书籍76jsp论坛下载77jsp 上传,78jsp计数器79jsp 注释80jsp电子教程81jsp 保存用户名密码,82jsp的优点83jsp软件下载84jsp语言85jsp代码下载86jsp blog87jsp 打印88jsp手册

思顿科技-专业网站制作指南、网页设计制作教程、免费网页制作素材下载、免费学习网页制作指南,专业网站建设服务、网站制做指南、免费网页制作指南、网页制作服务、免费空间域名服务、
首页
网页教程
网页素材
收录查询
工具下载
网站欣赏
网站论坛
免费博客
建站服务

ASP.NET窗体对话框的实现
你当前的位置:网站制作指南 --> 技术文档全集 (www.STasp.com)

窗体对话框组件与微软视窗操作系统中的对话框是一样的;也就是说,PRINTDIALOG 组件是“打印”对话框,OPENFILEDIALOG 组件是 “打开文件”对话框,依此类推。

与以往的 MICROSOFT VISUAL BASIC 6.0 等 WINDOWS 程序设计语言相似,.NET 框架提供了 WINDOWS 用户耳熟能详的对话框。对话框的具体用途(如 PRINTDIALOG 可用于文件打印等)通常是多种多样的。故而在 .NET 框架提供的基础类中不包含用于文件打印、颜色选择等具体操作的代码,而你却可以根据应用程序的需要灵活地实现它们。因此,在 .NET 框架下,你不但可以直接应用标准对话框,而且能根据用户的选择作出不同的响应。本文提供的代码其用途就在于此。

注意,关于各种对话框的属性、方法和事件的完整描述,可以在相应类的 MEMBERS 页面中找到。比如要查看 OPENFILEDIALOG 组件的某一方法,就可以在文档索引的“OPENFILEDIALOG CLASS, ALL MEMBERS”栏目中找到相关的主题。

OPENFILEDIALOG 组件

OPENFILEDIALOG 对话框使得用户能够通过浏览本地或者远程的文件系统以打开所选文件。它将返回文件路径和所选的文件名。

OPENFILEDIALOG 组件和 SAVEFILEDIALOG 组件(下文将会详细描述)包含了用于浏览和选取文件所必需的基本代码。有了它们,你就不必为这些功能编写任何代码,进而能够专心实现打开或者保存文件等具体操作。

注意,FILEDIALOG 类的 FILTERINDEX 属性(由于继承的原因,为 OPENFILEDIALOG 和 SAVEFILEDIALOG 类所共有) 使用 ONE-BASED 索引(译者注:指从 1 开始编号的索引)。 此特性将在下文的代码中用到(并且会在相应位置再次强调)。当应用程序通过类型过滤器打开文件时,或者需要保存为特定格式的文件(比如:保存为纯文本文件而不是二进制文件)时,这一点是非常重要的。人们在使用 FILTERINDEX 属性时却经常忘了它,因此现在务必要把它记住。

下列代码通过 BUTTON 控件的 CLICK 事件调用 OPENFILEDIALOG 组件。当用户选中某个文件,并且单击 OK 的时候,所选的文件将被打开。在本例中,文件内容将被显示在消息框内,以证实文件流被读入。

本例假设存在名为 BUTTON1 的 BUTTON 控件和名为 OPENFILEDIALOG1 的 OPENFILEDIALOG 控件。

' VISUAL BASIC
' NOTE: YOU MUST IMPORT THE FOLLOWING NAMESPACE:
' IMPORTS SYSTEM.IO
' WITHOUT THIS IMPORT STATEMENT AT THE BEGINNING
' OF YOUR CODE, THE EXAMPLE WILL NOT FUNCTION.
PRIVATE SUB BUTTON1_CLICK(BYVAL SENDER AS SYSTEM.OBJECT, _
BYVAL E AS SYSTEM.EVENTARGS) HANDLES BUTTON1.CLICK
IF OPENFILEDIALOG1.SHOWDIALOG() = DIALOGRESULT.OK THEN
DIM SR AS NEW STREAMREADER(OPENFILEDIALOG1.FILENAME)
MESSAGEBOX.SHOW(SR.READTOEND)
SR.CLOSE()
END IF
END SUB

// C#
// NOTE: YOU MUST IMPORT THE FOLLOWING NAMESPACE:
// USING SYSTEM.IO;
// WITHOUT THIS IMPORT STATEMENT AT THE BEGINNING
// OF YOUR CODE, THE EXAMPLE WILL NOT FUNCTION.
PRIVATE VOID BUTTON1_CLICK(OBJECT SENDER, SYSTEM.EVENTARGS E)
{
IF(OPENFILEDIALOG1.SHOWDIALOG() == DIALOGRESULT.OK)
{
STREAMREADER SR = NEW STREAMREADER(OPENFILEDIALOG1.FILENAME);
MESSAGEBOX.SHOW(SR.READTOEND());
SR.CLOSE();
}
}

打开文件还可以使用 OPENFILEDIALOG 组件的 OPENFILE 方法,它将返回文件的每一个字节。在下面的例子中,一个 OPENFILEDIALOG 组件将被实例化,它使用了 CURSOR 过滤器,以限定用户只能选取光标文件(扩展名为 .CUR)。一旦某个 .CUR 文件被选中,窗体的光标就被设成该文件描绘的光标形状。

本例假设存在名为 BUTTON1 的 BUTTON 控件。

' VISUAL BASIC
PRIVATE SUB BUTTON1_CLICK(BYVAL SENDER AS SYSTEM.OBJECT, _
BYVAL E AS SYSTEM.EVENTARGS) HANDLES BUTTON1.CLICK
' DISPLAY AN OPENFILEDIALOG SO THE USER CAN SELECT A CURSOR.
DIM OPENFILEDIALOG1 AS NEW OPENFILEDIALOG()
OPENFILEDIALOG1.FILTER = "CURSOR FILES|*.CUR"
OPENFILEDIALOG1.TITLE = "SELECT A CURSOR FILE"

' SHOW THE DIALOG.
' IF THE USER CLICKED OK IN THE DIALOG AND
' A .CUR FILE WAS SELECTED, OPEN IT.
IF OPENFILEDIALOG1.SHOWDIALOG() = DIALOGRESULT.OK THEN
IF OPENFILEDIALOG1.FILENAME <> "" THEN
' ASSIGN THE CURSOR IN THE STREAM TO THE FORM'S CURSOR PROPERTY.
ME.CURSOR = NEW CURSOR(OPENFILEDIALOG1.OPENFILE())
END IF
END IF
END SUB

// C#
PRIVATE VOID BUTTON1_CLICK(OBJECT SENDER, SYSTEM.EVENTARGS E)
{
// DISPLAY AN OPENFILEDIALOG SO THE USER CAN SELECT A CURSOR.
OPENFILEDIALOG OPENFILEDIALOG1 = NEW OPENFILEDIALOG();
OPENFILEDIALOG1.FILTER = "CURSOR FILES|*.CUR";
OPENFILEDIALOG1.TITLE = "SELECT A CURSOR FILE";

// SHOW THE DIALOG.
// IF THE USER CLICKED OK IN THE DIALOG AND
// A .CUR FILE WAS SELECTED, OPEN IT.
IF (OPENFILEDIALOG1.SHOWDIALOG() == DIALOGRESULT.OK)
{
IF(OPENFILEDIALOG1.FILENAME != "")
{
// ASSIGN THE CURSOR IN THE STREAM TO THE FORM'S CURSOR PROPERTY.
THIS.CURSOR = NEW CURSOR(OPENFILEDIALOG1.OPENFILE());
}
}
}

关于读取文件流的进一步信息,请参阅FILESTREAM.BEGINREAD 方法。

SAVEFILEDIALOG 组件

本对话框允许用户浏览文件系统并且选取将被写入的文件。当然,你还必须为文件写入编写具体代码。

下列代码通过 BUTTON 控件的 CLICK 事件调用 SAVEFILEDIALOG 组件。当用户选中某个文件,并且单击 OK 的时候,RICHTEXTBOX 控件里的内容将被保存到所选的文件中。

本例假设存在名为 BUTTON1 的 BUTTON 控件,名为 RICHTEXTBOX1 的 RICHTEXTBOX 控件和名为 OPENFILEDIALOG1 的 SAVEFILEDIALOG 控件。

' VISUAL BASIC
' NOTE: YOU MUST IMPORT THE FOLLOWING NAMESPACE:
' IMPORTS SYSTEM.IO
' WITHOUT THIS IMPORT STATEMENT AT THE BEGINNING
' OF YOUR CODE, THE CODE EXAMPLE WILL NOT FUNCTION.
PRIVATE SUB BUTTON1_CLICK(BYVAL SENDER AS SYSTEM.OBJECT, _
BYVAL E AS SYSTEM.EVENTARGS) HANDLES BUTTON1.CLICK
IF SAVEFILEDIALOG1.SHOWDIALOG() = DIALOGRESULT.OK THEN
RICHTEXTBOX1.SAVEFILE(SAVEFILEDIALOG1.FILENAME, _
RICHTEXTBOXSTREAMTYPE.PLAINTEXT)
END IF
END SUB

// C#
// NOTE: YOU MUST IMPORT THE FOLLOWING NAMESPACE:
// USING SYSTEM.IO;
// WITHOUT THIS IMPORT STATEMENT AT THE BEGINNING
// OF YOUR CODE, THE CODE EXAMPLE WILL NOT FUNCTION.
PRIVATE VOID BUTTON1_CLICK(OBJECT SENDER, SYSTEM.EVENTARGS E)
{
IF((SAVEFILEDIALOG1.SHOWDIALOG() == DIALOGRESULT.OK)
{
RICHTEXTBOX1.SAVEFILE(SAVEFILEDIALOG1.FILENAME, RICHTEXTBOXSTREAMTYPE.PLAINTEXT);
}
}

保存文件还可以用 SAVEFILEDIALOG 组件的 OPENFILE 方法,它将提供一个用于写入的 STREAM 对象。

在下面的例子中,有一个包含图片的 BUTTON 控件。 当你单击这个按钮的时候,一个 SAVEFILEDIALOG 组件将被打开,它将使用 .GIF 、 .JPEG 和 .BMP 类型的文件过滤器。一旦用户通过 SAVE FILE 对话框内选中此类文件,按钮上的图片将被存入其中。

本例假设存在名为 BUTTON2 的 BUTTON 控件,并且它的 IMAGE 属性被设为某个扩展名为 .GIF 、 .JPEG 或者 .BMP 的图片文件。

'VISUAL BASIC
' NOTE: YOU MUST IMPORT THE FOLLOWING NAMESPACES:
' IMPORTS SYSTEM.IO
' IMPORTS SYSTEM.DRAWING.IMAGING
' WITHOUT THESE IMPORT STATEMENTS AT THE BEGINNING OF YOUR CODE,
' THE CODE EXAMPLE WILL NOT FUNCTION.
PRIVATE SUB BUTTON2_CLICK(BYVAL SENDER AS SYSTEM.OBJECT, _
BYVAL E AS SYSTEM.EVENTARGS) HANDLES BUTTON2.CLICK
' DISPLAY AN SAVEFILEDIALOG SO THE USER CAN SAVE THE IMAGE
' ASSIGNED TO BUTTON2.
DIM SAVEFILEDIALOG1 AS NEW SAVEFILEDIALOG()
SAVEFILEDIALOG1.FILTER = "JPEG IMAGE|*.JPG|BITMAP IMAGE|*.BMP|GIF IMAGE|*.GIF"
SAVEFILEDIALOG1.TITLE = "SAVE AN IMAGE FILE"
SAVEFILEDIALOG1.SHOWDIALOG()

' IF THE FILE NAME IS NOT AN EMPTY STRING OPEN IT FOR SAVING.
IF SAVEFILEDIALOG1.FILENAME <> "" THEN
' SAVE THE IMAGE VIA A FILESTREAM CREATED BY THE OPENFILE METHOD.
DIM FS AS FILESTREAM = CTYPE(SAVEFILEDIALOG1.OPENFILE(), FILESTREAM)
' SAVE THE IMAGE IN THE APPROPRIATE IMAGEFORMAT BASED UPON THE
' FILE TYPE SELECTED IN THE DIALOG BOX.
' NOTE THAT THE FILTERINDEX PROPERTY IS ONE-BASED.
SELECT CASE SAVEFILEDIALOG1.FILTERINDEX
CASE 1
ME.BUTTON2.IMAGE.SAVE(FS, IMAGEFORMAT.JPEG)

CASE 2
ME.BUTTON2.IMAGE.SAVE(FS, IMAGEFORMAT.BMP)

CASE 3
ME.BUTTON2.IMAGE.SAVE(FS, IMAGEFORMAT.GIF)
END SELECT

FS.CLOSE()
END IF
END SUB

// C#
// NOTE: YOU MUST IMPORT THE FOLLOWING NAMESPACES:
// USING SYSTEM.IO;
// USING SYSTEM.DRAWING.IMAGING;
// WITHOUT THESE IMPORT STATEMENTS AT THE BEGINNING OF YOUR CODE,
// THE CODE EXAMPLE WILL NOT FUNCTION.
PRIVATE VOID BUTTON2_CLICK(OBJECT SENDER, SYSTEM.EVENTARGS E)
{
// DISPLAY AN SAVEFILEDIALOG SO THE USER CAN SAVE THE IMAGE
// ASSIGNED TO BUTTON2.
SAVEFILEDIALOG SAVEFILEDIALOG1 = NEW SAVEFILEDIALOG();
SAVEFILEDIALOG1.FILTER = "JPEG IMAGE|*.JPG|BITMAP IMAGE|*.BMP|GIF IMAGE|*.GIF";
SAVEFILEDIALOG1.TITLE = "SAVE AN IMAGE FILE";
SAVEFILEDIALOG1.SHOWDIALOG();

// IF THE FILE NAME IS NOT AN EMPTY STRING OPEN IT FOR SAVING.
IF(SAVEFILEDIALOG1.FILENAME != "")
{
// SAVE THE IMAGE VIA A FILESTREAM CREATED BY THE OPENFILE METHOD.
FILESTREAM FS = (FILESTREAM)SAVEFILEDIALOG1.OPENFILE();
// SAVE THE IMAGE IN THE APPROPRIATE IMAGEFORMAT BASED UPON THE
// FILE TYPE SELECTED IN THE DIALOG BOX.
// NOTE THAT THE FILTERINDEX PROPERTY IS ONE-BASED.
SWITCH(SAVEFILEDIALOG1.FILTERINDEX)
{
CASE 1 :
THIS.BUTTON2.IMAGE.SAVE(FS,IMAGEFORMAT.JPEG);
BREAK;

CASE 2 :
THIS.BUTTON2.IMAGE.SAVE(FS,IMAGEFORMAT.BMP);
BREAK;

CASE 3 :
THIS.BUTTON2.IMAGE.SAVE(FS,IMAGEFORMAT.GIF);
BREAK;
}

FS.CLOSE();
}
}


关于写入文件流的进一步信息,请参阅 FILESTREAM.BEGINWRITE 方法。

COLORDIALOG 组件

此对话框显示颜色列表,并且返回所选的颜色。

与前两种对话框不同,COLORDIALOG 组件很容易实现其主要功能(挑选颜色)。选取的颜色将成为 COLOR 属性的设定值。因此,使用颜色就和设定属性值一样简单。在下面的例子中,按钮控制的 CLICK 事件将会开启一个 COLORDIALOG 组件。一旦用户选中某种颜色,并且单击了 OK ,按钮的背景将被设成所选的颜色。本例假设存在名为 BUTTON1 的 BUTTON 组件和名为 COLORDIALOG1 的 COLORDIALOG 组件。

' VISUAL BASIC
PRIVATE SUB BUTTON1_CLICK(BYVAL SENDER AS SYSTEM.OBJECT, _
BYVAL E AS SYSTEM.EVENTARGS) HANDLES BUTTON1.CLICK
IF COLORDIALOG1.SHOWDIALOG() = DIALOGRESULT.OK THEN
BUTTON1.BACKCOLOR = COLORDIALOG1.COLOR
END IF
END SUB

// C#
PRIVATE VOID BUTTON1_CLICK(OBJECT SENDER, SYSTEM.EVENTARGS E)
{
IF(COLORDIALOG1.SHOWDIALOG() == DIALOGRESULT.OK)
{
BUTTON1.BACKCOLOR = COLORDIALOG1.COLOR;
}
}


COLORDIALOG 组件具有 ALLOWFULLOPEN 属性。当其设为 FALSE 的时候,DEFINE CUSTOM COLORS 按钮将会失效,此时用户只能使用预定义的调色板。此外,它还有一个 SOLIDCOLORONLY 属性,当其设为 TRUE 时,用户将不能使用抖动颜色。

FONTDIALOG 组件

此对话框允许用户选择字体,以改变其 WEIGHT 和 SIZE 等属性。

被选中的字体将成为 FONT 属性的设定值。因此,使用字体也和设定属性值一样简单。在本例通过 BUTTON 控件的 CLICK 事件调用 FILEDIALOG 组件。当用户选中一个字体,并且单击 OK 的时候,TEXTBOX 控件的 FONT 属性将被设成所选的字体。本例假设存在名为 BUTTON1 的 BUTTON 控件,名为 TEXTBOX1 的 TEXTBOX 控件和名为 FONTDIALOG1 的 FONTDIALOG 组件。

' VISUAL BASIC
PRIVATE SUB BUTTON1_CLICK(BYVAL SENDER AS SYSTEM.OBJECT, _
BYVAL E AS SYSTEM.EVENTARGS) HANDLES BUTTON1.CLICK
IF FONTDIALOG1.SHOWDIALOG() = DIALOGRESULT.OK THEN
TEXTBOX1.FONT = FONTDIALOG1.FONT
END IF
END SUB

// C#
PRIVATE VOID BUTTON1_CLICK(OBJECT SENDER, SYSTEM.EVENTARGS E)
{
IF(FONTDIALOG1.SHOWDIALOG() == DIALOGRESULT.OK)
{
TEXTBOX1.FONT = FONTDIALOG1.FONT;
}
}

FONTDIALOG 元件还包括 MINSIZE 和 MAXSIZE 属性,它们决定了允许用户选择的字体的最小和最大点数;还有一个 SHOWCOLOR 属性,当其设为 TRUE 时,用户可以从对话框的下拉列表中选取字体的颜色。

PRINTDOCUMENT 类

以下三个会话框,PRINTDIALOG 组件、 PAGESETUPDIALOG 组件和 PRINTPREVIEWDIALOG 控件,都与 PRINTDOCUMENT 类有关。PRINTDOCUMENT 类用于文档打印前的设置:设定其属性,以改变文档外观和打印方式,再将其实例输出到打印机。通常的步骤是:
(1) 生成 PRINTDOCUMENT 类的一个实例;
(2) 设置 PAGESETUPDIALOG 组件的属性;
(3) 使用 PRINTPREVIEWDIALOG 控件进行预览;
(4) 通过 PRINTDIALOG 组件打印出来。

关于 PRINTDOCUMENT 类的进一步资料,请参阅 PRINTDOCUMENT CLASS 。

PRINTDIALOG 元件

此对话框允许用户指定将要打印的文档。除此之外,它还能用于选择打印机、决定打印页,以及设置打印相关属性。通过它可以让用户文档打印更具灵活性:他们既能打印整个文档,又能打印某个片断,还能打印所选区域。

使用 PRINTDIALOG 组件时要注意它是如何与 PRINTERSETTINGS 类进行交互的。PRINTERSETTINGS 类用于设定纸张来源、分辨率和加倍放大等打印机特征属性。每项设置都是 PRINTERSETTINGS 类的一个属性。通过 PRINTDIALOG 类可以改变关联到文档的 PRINTERSETTING 类实例(由PRINTDOCUMENT.PRINTERSETTINGS 指定)的特征属性值。

PRINTDIALOG 组件将包含特征属性设置的 PRINTDOCUMENT 类的实例提交到打印机。应用 PRINTDIALOG 组件进行文档打印的范例,请参见 CREATING STANDARD WINDOWS FORMS PRINT JOBS。

PAGESETUPDIALOG 组件

PAGESETUPDIALOG 组件用于显示打印布局、纸张大小和其它页面选项。如同其他对话框一样,可以通过 SHOWDIALOG 方法调用 PAGESETUPDIALOG 组件。此外,必须生成一个 PRINTDOCUMENT 类的实例,也即被打印的文档;而且必须安装了一台本地或者远程打印机,否则,PAGESETUPDIALOG 组件将无法获取打印格式以供用户选择。

使用 PAGESETUPDIALOG 组件时必须注意它是如何与 PAGESETTINGS 类进行交互的。PAGESETTINGS 类决定页面如何被打印,比如打印方向、页面大小和边距等。每项设置都是 PAGESETTINGS 类的一个属性。PAGESETUPDIALOG 类可以改变 PAGESETTINGS 类实例(由 PRINTDOCUMENT.DEFAULTPAGESETTINGS 指定)的上述选项。

在下列代码中,BUTTON 控件的 CLICK 事件处理程序开启一个 PAGESETUPDIALOG 组件;其 DOCUMENT 属性被设成某个存在的文档;其 COLOR 属性被设成 FALSE 。

本例假设存在名为 BUTTON1 的 BUTTON 控件、名为 MYDOCUMENT 的 PRINTDOCUMENT 控件和名为 PAGESETUPDIALOG1 的 PAGESETUPDIALOG 组件。

' VISUAL BASIC
PRIVATE SUB BUTTON1_CLICK(BYVAL SENDER AS SYSTEM.OBJECT, _
BYVAL E AS SYSTEM.EVENTARGS) HANDLES BUTTON1.CLICK
' THE PRINT DOCUMENT 'MYDOCUMENT' USED BELOW
' IS MERELY FOR AN EXAMPLE.
'YOU WILL HAVE TO SPECIFY YOUR OWN PRINT DOCUMENT.
PAGESETUPDIALOG1.DOCUMENT = MYDOCUMENT
' SET THE PRINT DOCUMENT'S COLOR SETTING TO FALSE,
' SO THAT THE PAGE WILL NOT BE PRINTED IN COLOR.
PAGESETUPDIALOG1.DOCUMENT.DEFAULTPAGESETTINGS.COLOR = FALSE
PAGESETUPDIALOG1.SHOWDIALOG()
END SUB

// C#
PRIVATE VOID BUTTON1_CLICK(OBJECT SENDER, SYSTEM.EVENTARGS E)
{
// THE PRINT DOCUMENT 'MYDOCUMENT' USED BELOW
// IS MERELY FOR AN EXAMPLE.
// YOU WILL HAVE TO SPECIFY YOUR OWN PRINT DOCUMENT.
PAGESETUPDIALOG1.DOCUMENT = MYDOCUMENT;
// SET THE PRINT DOCUMENT'S COLOR SETTING TO FALSE,
// SO THAT THE PAGE WILL NOT BE PRINTED IN COLOR.
PAGESETUPDIALOG1.DOCUMENT.DEFAULTPAGESETTINGS.COLOR = FALSE;
PAGESETUPDIALOG1.SHOWDIALOG();
}

PRINTPREVIEWDIALOG 控件

与其他对话框不同,PRINTPREVIEWDIALOG 控件对整个应用程序或者其它控件没有影响,因为它仅仅在对话框里显示内容。此对话框用于显示文档,主要是打印之前的预览。

调用 PRINTPREVIEWDIALOG 控件,也是使用 SHOWDIALOG 方法。同时,必须生成 PRINTDOCUMENT 类的一个实例,也即被打印的文档。

注意:当使用 PRINTPREVIEWDIALOG 控件时,也必须已经安装了一台本地或者远程打印机,否则 PRINTPREVIEWDIALOG 组件将无法获取被打印文档的外观。

PRINTPREVIEWDIALOG 控件通过 PRINTERSETTINGS 类和 PAGESETTINGS 类进行设置,分别与 PAGEDIALOG 组件和 PAGESETUPDIALOG 组件相似。此外,PRINTPREVIEWDIALOG 控件的 DOCUMENT 属性所指定的被打印文档,同时作用于 PRINTERSETTINGS 类和 PAGESETTINGS 类,其内容被显示在预览窗口中。

在下列代码中,通过 BUTTON 控件的 CLICK 事件调用 PRINTPREVIEWDIALOG 控件。被打印文档在 DOCUMENT 属性中指定。注意:代码中没有指定被打印文档。

本例假设存在名为 BUTTON1 的 BUTTON 控件,名为 MYDOCUMENT 的 PRINTDOCUMENT 组件和名为 PRINTPREVIEWDIALOG1 的 PRINTPREVIEWDIALOG 控件。


' VISUAL BASIC
PRIVATE SUB BUTTON1_CLICK(BYVAL SENDER AS SYSTEM.OBJECT, _
BYVAL E AS SYSTEM.EVENTARGS) HANDLES BUTTON1.CLICK
' THE PRINT DOCUMENT 'MYDOCUMENT' USED BELOW
' IS MERELY FOR AN EXAMPLE.
' YOU WILL HAVE TO SPECIFY YOUR OWN PRINT DOCUMENT.
PRINTPREVIEWDIALOG1.DOCUMENT = MYDOCUMENT
PRINTPREVIEWDIALOG1.SHOWDIALOG()
END SUB

// C#
PRIVATE VOID BUTTON1_CLICK(OBJECT SENDER, SYSTEM.EVENTARGS E)
{
// THE PRINT DOCUMENT 'MYDOCUMENT' USED BELOW
// IS MERELY FOR AN EXAMPLE.
// YOU WILL HAVE TO SPECIFY YOUR OWN PRINT DOCUMENT.
PRINTPREVIEWDIALOG1.DOCUMENT = MYDOCUMENT;
PRINTPREVIEWDIALOG1.SHOWDIALOG()
}

小结
.NET 框架里包含了 WINDOWS 用户所熟悉的各种公共对话框,于是在应用程序中提供交互功能变得更加容易。通常,对话框的用途是多种多样的;.NET 框架对此提供了开放支持,你可以选择最佳方案以适合应用程序的需要。我们介绍了与对话框组件有关的一些简单应用。你可以直接使用这些代码,也可以对其稍加修改用于你的应用程序。

 
| 关于我们 | 联系我们 | 业务合作 | 友情链接 | 网站地图 |
版权所有©思顿科技-专业网站制作指南2004-2006 在线技术支持- QQ:63127313