WinForm/C# WinForm 开发笔记

xinggang · 2018年04月27日 · 84 次阅读

开发笔记,记录点滴。
大多是在平时 WinForm 开发中遇到的一些小问题及个人建议的解决方案。

1、日期控件显示格式

建议 wnDate 控件显示格式中 ShortYMDT 的分隔符号调整为/,即 yyyy/MM/dd,目前是用的短横线。

2、数值列显示格式

数据源列配置中数值类型的显示格式被同时应用在 EditMask 和 DisplayFormat,而实际上这两个属性设置格式是不一样的:编辑 EditMask 只支持 2 部分设置,DisplayFormat 显示时支持三部分设置,即 DisplayFormat 可以定义正数;负数;0 时的显示格式,而 EditMask 不支持 0 的设置,于是现在的框架限制了我们无法为 0 设置特殊的显示格式(比如:有数时我们想都显示两位小数,0 时有的情况需要显示为 0,有的情况需要显示成空白)。
注:有同学想出一个办法,设置格式如下:【##0.0#;-##0.0#;''】,注意最后面第三部门是空字符串,这样可以实现 0 的时候显示成空白,但仍无法实现两位小数列如是 0 的时候显示成 0。
更多说明请参考:http://xxb.lttc.cn/read-88.html

3、数值列是可以为空

有些数值列在数据库设计中是 not null 的,这样我们在列配置中都设置了默认值 0,但如果用户就是把这个列清空怎么办呢?有的同学会在代码中处理:保存时如果有的列是 null 则赋值成 0,所以建议将 [允许为空] 的也配置在列配置信息中,在装配时不能为空的列设置以下属性:

(wnGridMain.Columns["WorkHours"].ColumnEdit as RepositoryItemTextEdit).AllowNullInput = DefaultBoolean.False;

4、WnGrid 配置信息中 [是否允许排序] 改为下拉选择

选择项有:禁用排序、立即排序、延迟排序。如果延迟排序时,即使用户设置了排序规则再新增单据或修改列数据后也不会造成行位置乱跑。延迟排序需要设置如下:(同样适用于过滤操作)

gridView1.OptionsBehavior.ImmediateUpdateRowPosition = false;

5、数据验证不建议在 CellValueChanged 事件中处理既然是 Changed 事件说明数据已经改变,何不在改变前将非法内容拒之门外呢,请参考:http://xxb.lttc.cn/read-119.html

6、持续完善

这个必须收藏

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册