- 热门文章:
- · .Net平台Windows Forms程序设计简介 -2
- · Visual C# 对话框全接触
- · .Net平台Windows Forms程序设计简介-1(转自:天极网)
- · Retrieving Environmental Details using VB.NET
- · 东方兄,我搞定了,看代码
- · 这个是一个常见错误
- · 让你仔细看MSDN,你不看,现在又来问了:)
- · Displaying ListView items - with class!
- · 应Mr.Cool要求:Using Late Bound COM Objects
- · 原创Nutsbell系列---winform如何做启动页面
- · 一个简单的用户登陆程序……
- · Henry手记— WinForm Datagrid结构剖析(一)
上一篇:动态加载服务器控件(整理) >>
Visual C# 对话框全接触(续)
在文字处理中,我们常用到字体,现在我们来做一个最常见的字体对话框。
一、 字体对话框(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)这两个对话框。有了上述基础,大家可以很容易的写出一个简单的记事本。
下一篇:.Net平台Windows Forms程序设计简介 -2 >>
相关文章:
- · 手把手教你在Win2003下配置ASP.NET开发环境
- · winform里的treeview能够跟数据绑定吗?我不知道。里面有treeview的用法。是转来的,看看吧。我已经用了。
- · 用户界面设计风格说明(转)
- · 一段log execption 的代码
- · 从App到Application (CSDN)
- · VB.Net创建不规则窗体 Montaque(原作)
- · VB.NET中声音的播放 Montaque(原作)
- · 调用屏幕保护 40Star(原作)
- · 托拽Explore中的文件到VB.net的窗口 40Star(原作)
- · 窗体显示有模式与无模式之分...
- · 窗体的Close方法与Hide方法...
- · 启动窗体的设计...
- · 从一个窗体控件另一窗体,需要通过共享变量...
- · 我已经解决了,以下是解决的类的详细信息:
- · HOW TO: Set a Windows Hook in Visual C# .NET
- · 除了使用hook外,下面的代码也能够在全局捕捉鼠标:(csdn)
- · ---------续
- · 在.NET中使用API的方法
- · To CNET:全局热键的例子,不知道有没有用
- · 使用WINDOWS2003出问题的朋友请看
- · 俺写的一个简单的字符串处理函数(可能会有用)
- · 手把手教你在Win2003下配置ASP.NET开发环境
- · 确保只有一个程序实例运行(C#)之解决方案
- · 在C#中调用VB.NET函数实例
- · VB.NET窗体操作技巧两则
- · 用C#创建COM对象
- · 如何在.NET中处理WMI数据
- · 我的推荐:在VB.NET中寻找App
- · Visual Basic .NET 代码示例:与 Windows 服务交互 (2003年2月17日)
- · 附:创建 Windows XP 图标
- · MainMenu的Merge使用
- · 关于 WinForm程序的登陆处理
- · 我的推荐:了解正则表达式
- · 自己做出VS.NET风格的右键菜单
- · 解决了,通过DataSet的递归操作TreeView生成树状图
- · 一段在IE上加按钮的Script,主要操作注册表,先贴了再说
- · 如何定制你自己的DataGrid
- · 子窗体刷新父窗体的问题完全解决了,谢谢E版主
