使用DevExpress控件来做项目开发已经有很长一段时间了,在摸索开发到客户苛刻要求的过程中,其中碰到过很多问题需要解决的,随着一个个问题的解决,也留下很多对DevExpress控件的使用经验及教训,综合设计到的多个项目的问题,对这些开发常用的要点进行总结,方便别人也方便自己。提供这些解决方法,一个可以快速应用到项目中,二个也可以作为对界面开发的更高要求对待自己的项目,使得自己的东西更加完美,更加受欢迎。

01GridControl控件的数据显示的样式控制

打开网易新闻 查看更多图片
打开网易新闻 查看更多图片

如上两图所示,我们有时候需要控制列表访问过的颜色变化,或者是时间显示格式等内容,这个时候设置GridView的RowCellStyle即可实现

02在LayoutControl布局中固定控件宽度

打开网易新闻 查看更多图片

固定宽度后的真实效果。

打开网易新闻 查看更多图片

为了使得界面统一性及更好的控制性,我们一般使用LayoutControl布局控件作为我们添加控件的布局容器,但是这个控件默认是对其中的控件进行按窗口比例进行缩放的,有些客户就不喜欢这些特点,因为他们的显示器可能是30寸的(夸张一点点,不过很多宽屏的),这样很多输入框就会被拉得很长,这样小小一个输入框,可能有很长的一段空白的距离,那样可能真的不好看,如下图所示。

设置固定宽度,其实不是很麻烦,需要设置几个属性即可:

1.设置控件的SizeConstraintsType为DevExpress.XtraLayout.SizeConstraintsType.Custom;

2.设置控件的FillControlToClientArea 为False;

3.置控件的ControlMaxSize的大小(必要时也可以设置ControlMinSize),设置例子如下所示。

打开网易新闻 查看更多图片

03GridControl中的GridView内容打印

打开网易新闻 查看更多图片

由于GridView的良好封装性,实现打印的代码很简单。

04设置GridView的行指示器显示行号

打开网易新闻 查看更多图片

其实这个在DevExpress中的实现很简单,如果需要,可以实现在自己的代码里面。

1.先实现GridView的CustomDrawRowIndicator事件,点击查看示例代码>>

2.然后设置GridView控件的IndicatorWidth为合适的宽度,如40左右则比较好。

打开网易新闻 查看更多图片

05控件内容输入问题

在客户使用软件的时候,反馈说有一些数字输入框、日期输入框,不支持键盘输入内容,经测试,确实是存在这个问题,默认的数字、日期等输入,都要切换输入法才可以输入,不能默认就支持数字的输入,那么是否有办法解决呢,当然办法总是有的。

其实只需要设置 ImeMode=Off 即可解决问题,关于这个属性,大家可以参考下面的介绍。(就开发而言,记得逢数字,日期的控件,必须设置 ImeMode=Off ,否则你的软件使用客户会骂娘。

ImeMode 枚举:指定一个值,该值是用来确定在选定了对象时该对象的输入法编辑器 (IME) 的状态。以下是微软的解释:

打开网易新闻 查看更多图片

06多行表头的实现

打开网易新闻 查看更多图片

有时候,我们为了一些特殊的需要,要对表头进行特别的排版,使其支持多行表头的效果,如上图所示,这样方便对各项内容进行归类显示,易于阅读,在DevExpress中应该如何实现这个效果呢?

1. 先在设计模式将普通的GridView转换为BandedGridView或者AdvBandedGridView,这样才能支持这种多行表头的做法,如下所示。

打开网易新闻 查看更多图片

2. 定义一些字段,用来显示其中的内容,如下图所示。

打开网易新闻 查看更多图片

3. 定义一些Band列,设置相关的属性,并把设计界面中的字段列表拖动到对应过的Band列上面,这样就构成了一个Band列和字段内容的对应关系。

打开网易新闻 查看更多图片

完成上面的绑定关系后,记得设置GridView控件的属性,使其不要显示原本的ColumnHeader等内容。

打开网易新闻 查看更多图片

设置好这些内容,才能合理、完美显示出多行表头的信息。

07在网格控件中构建数据快速输入

打开网易新闻 查看更多图片

一个实际的案例就是门诊的时候,医生用药的情况,除了选择其他内容外,主要的就是快速录入药品信息。我们平常去大一点 的医院看病,好像看到的多数操作都是这样。还有一种方式就是销售人员提供的报价单,从产品里面选择信息,然后修改下价格,这些场景都是很适合这样的操作的。