Visual C# 对话框全接触[2]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 s98 的 blog

  四、 实现代码

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);
}
}
}

本文关键:Visual C# 对话框全接触
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top