RichTextBox如何实现所见即所得打印

引用MS提供的RichTextBox打印代码,当打印区域宽和高设置成RichTextBox的宽和高时打印预览出来的排版效果和实际在RichTextBox中的排版效果不一致。会出现下一行的第一个字跑到上一行末尾,难道RichTextBox打印和实际排版不是同调用同一段排版代码的么? 还是我设置有错? 请问如何实现所见即所得打印效果

很多人最闹不清的就是数据访问层,到底那部分才算数据访问层呢?有些认为数据库就是数据访问层,这是对定义没有搞清楚,DAL是数据访问层而不是数据存储层,因此数据库不可能是这一层的。也有的把SQLHelper(或其同类作用的组件)作为数据访问层,它又是一个可有可无的东西,SQLHelper的作用是减少重复性编码,提高编码效率,因此如果我习惯在乎效率或使用一个非数据库的数据源时,可以丢弃SQLHelper,一个可以随意弃置的部分,又怎么能成为三层架构中的一层呢。
  可以这样定义:与数据源操作有关的代码,就应该放在数据访问层中,属于数据访问层
  5、IUserDAL
  数据访问层接口,这又是一个可有可无的东西,因为Petshop中带了它和ClassFactory类工厂,所以有些项目不论需不需要支持多数据源,都把这两个东西做了进来,有的甚至不建ClassFactory而只建了IDAL,然后“IUserDAL iUserDal = new UserDAL();”,不知意义何在。这就完全是画虎不成反类犬了。
  许多人在这里有一个误解,那就是以为存在这样的关系:BLLßàIDALßàDAL,认为IDAL起到了BLL和DAL之间的桥梁作用,BLL是通过IDAL来调用DAL的。但实际是即使你如此编码:“IUserDAL iUserDal = ClassFacotry.CreateUserDAL();”,那么在执行“iUserDal.SelectUsers()”时,其实还是执行的UserDAL实例,而不是IUserDAL实例,所以IDAL在三层中的位置是与DAL平级的关系。
  通过上面的介绍,基本上将三层架构的层次结构说明了。其实,本人有一个判断三层架构是否标准的方法,那就是将三层中的任意一层完全替换,都不会对其它两层造成影响,这样的构造基本就符合三层标准了(虽然实现起来比较难^_^)。例如如果将项目从B/S改为C/S(或相反),那么除了UI以外,BLL与DAL都不用改动;或者将SQLServer改为Oracle,只需替换SQLServerDAL到OracleDAL,无需其它操作等等。本来想在文中加入一些具体的代码的,但感觉不是很必要,如果大家觉得需要的话,我再补充吧。
  总结:不要因为某个层对你来说没用,或者实现起来特别简单,就认为它没有必要,或者摒弃它,或者挪作它用。只要进行了分层,不管是几层,每一层都要有明确的目的和功能实现,而不要被实际过程所左右,造成同一类文件位于不同层的情况发生。也不要出现同一层实现了不同的功能的情况发生。

model的字段封装 是数据载体,不是一层。
bll是业务逻辑层,当你的ui层有cs/bs等时,是不是都可以调用bll啊,当你的表现更多形式的时候,同一个方法只要写一次就可以多次使用了,那样也统一,如果再做分布式系统,bll是不是可以直接放到服务器上给调用,客户端不管理你是什么,逻辑都是一样的。

做 ASP.NET 快五年了,现在才算基本明白了三层架构,
11 楼所讲滴三层架构是俺两年前滴理解,虽然用 Model 取代了 DataTable,
但是写起来仍感觉代码不流畅!

直到前几个月才悟出来,分层并不重要,OO 才是最重要滴!!!

借 11 楼所讲滴三层架构一用,虽然层分滴很华丽,
但是真正滴对象在哪里?对象滴继承在哪里?对象之间滴组合又在哪里?
也许有人会说现在应用很简单,等应用复杂起来就会有了,是真的么?!
答案当然是,非真!

OO 实现与应用滴简单与否并无直接关系,简单应用照样有对象,只是数量少一些,一两个而已,
而 11 楼所讲滴那种三层架构中,虽然有 Model 和 BLL,但恰恰没有真正滴对象,接下来仔细分析一下:

Model 层,一些只有属性、字段而无方法滴类,基本上都是数据库表直接映射而来滴,
虽然用到了 class 关键字,但它们不是类,只是一些数据表滴变体而已,形象一些也可称为数据傀儡,
只能任人摆布,结论 Model 层是一些残疾类滴集合,没有丝毫 OO 滴思想;

来源:足球论坛

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值