打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
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)这两个对话框。有了上述基础,大家可以很容易的写出一个简单的记事本。


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
c_对话框大全
CommonDialog 控件(针对 Visual Basic 6.0 用户)
分析C#中Dialog控件(转)
winform 自带打印控件(转)
C#打印操作——打印设置、打印预览及打
打印功能及打印预览实现(C#
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服