Visual C# 对话框全接触
VS.net bate 2出来也很久了,感觉还可以。早一阵子,朋友让我帮他写两个打印程序,当中用了不少的对话,在查资料的时候看到国外有一篇专门的文章介绍对话框的,就决定写这篇文章,让大家都有个好的起点。同时还着重介绍了打印那一部份,大家可以仔细研究一下,都说了很多了。现在我们开发吧!
对话框中我们常用了以下几种:
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),我们来讲打印和页面设置.
页面设置(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 { 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)这两个对话框。有了上述基础,大家可以很容易的写出一个简单的记事本。
来自:http://www.newasp.net/tech/net/8468.html,http://www.newasp.net/tech/net/8470.html
Visual C# 对话框全接触相关推荐
- C#,深入浅出全接触
C#,深入浅出全接触青苹果工作室(编译)目 录 表一.什么是C#?二.Java与C# 三.C#的主要特征四.安装运行环境五.C#编辑器六.C#的程序结构七.C#和名称空间八.C#中一个经典例程的编写与 ...
- 游戏策划全接触之游戏剧本篇-----原创
游戏策划全接触之游戏剧本篇 先说一句题外话,看本文章的不是和我一样的菜鸟,就是编程达人,不会策划,如果是如此,请教我一下C++!谢谢!! --------------------------- ...
- USB2.0驱动安装全接触
USB2.0驱动安装全接触 其实许多电脑的USB2.0并没有正确安装或根本没有安装,多数用户并没有真正享受USB2.0的快感,虽然USB2.0具有480Mbps的峰值理论数据传输率,包括联想等的品牌电 ...
- 探秘新一代音视频技术融合通信平台全接触
从社交到视频会议,从金融到医疗,云端通信能力正在与传统的电话/IM.呼叫中心.企业通信融合,打通各个端与渠道的数据,实现实时互联与掌控.而音视频技术在其中扮演着重要的角色,如何为用户提供更低延迟.更佳 ...
- 如何让Android对话框全屏 Dialog 全屏
如何让一个对话框全屏对话框: <style name="Theme.Application.Dialog.Alert" parent="android:Theme. ...
- 如何让一个对话框全屏对话框
如何让一个对话框全屏对话框: <style name="Theme.Application.Dialog.Alert" parent="android:Theme. ...
- OpenNMS全接触-事件及通知(九)
在上一篇文章OpenNMS全接触-事件及通知(八)中,介绍了OpenNMS在收到受管设备发出的SNMP Trap之后,如何将收到的SNMP Trap与eventconf.xml文件中定义的事件(eve ...
- 网络知识入门:路由器基础知识全接触
网络知识入门:路由器基础知识全接触 发布时间:2008.05.29 07:01 来源:赛迪网 作者:月伴雨 路由器综述 路由器是互联网的主要节点设备.路由器通过路由决定数据的转发.转发策 ...
- 小明加密通道进入_「成都全接触」最新!成都8条地铁进展来了!年底还有5条铁路、9条通道!...
友情提示:2020余额已不足四分之一大家关心的8条地铁线路也有了最新进度其中包括5条预计今年开通3条全新路线.2条机场快速线一起来看看有没有路过你家门口的(内含路线图)-10号线三期-最新进展:全线5 ...
最新文章
- python or的用法_python中and和or的用法
- 互联网协议 — 数据交换技术
- Flyway 执行报错: 'user_variables_by_thread' 表没有SELECT权限问题
- linux引数列项目过长,Linux 命令个人总结====== 未完待续 个人认为比较重要
- 怎么安装python3-Ubuntu16.04怎样安装Python3.6
- Java虚拟机学习(7):对象内存分配与回收
- FLutter入门:异步加载组件FutureBuilder
- 列宽一字符等于多少厘米_字符串匹配算法总结——BF、KMP、BM
- 敏捷开发流程的8个步骤_敏捷开发——个体和互动高于流程和工具
- 华为鸿蒙HarmonyOS-面向全场景的分布式操作系统
- html5画布作品,10个会让你惊叹不已的HTML5画布(CANVAS)技术应用演
- 利用DOSBox运行汇编超详细步骤
- Excel图表⑤—数据可视化的极简之美
- 仿真软件Multisim 10下载地址与破解补丁
- 马斯克 超级计算机,超级计算机升空 马斯克的SpaceX负责运送
- 用户画像的定义及构建方法
- Excel如何快速查询银行卡开户行?
- vue缓存服务器文件到本地,vue中,在本地缓存中读写数据的方法
- mysql转换戳转换成小时_MySQL时间函数 | 时间戳和日期之间得转换
- SOPC技术习题及答案
热门文章
- selenium 定位方式1
- c语言计算火车的运行时间_C++火车入轨算法的实现代码
- 【Contact】结构体+动态内存管理+文件存储实现简易通讯录代码
- 数据库练习题总题库选择判断简答操作题
- 商品进销差价_商品进销差价如何核算?
- native react 常用指令_React Native 常用命令或快捷键合集
- 项目启动会ppt_项目经理实战篇-项目启动会
- php 同步退出,Ucenter 的同步登录与同步退出
- 近年来量子计算机,近年来量子计算机研究的进展和困难.doc
- mysql where true_在MySQL中选择查询,检查字符串或在where子句中检查是否为true?