1. 将窗体上一个Panel(A)的Visiable属性从False置为True时代码执行无效。DEBUG该行代码发觉执行以后,该Panel的Visiable属性依然为False。经检查该Panel被放在了另一个Panel(B)中,而且次Panel的Visiable为False。将其从visiable=false的Panel中取出后问题得到解决。
猜测 Panel的visiable可能有特殊的继承关系,如外层不可见,内层都为不可见。
2. 使用SmartGrid的Checkbox列时,控件自动插入SmartGrid对应的DataTable的值在dt.row.defaultview.rowfilter中找不到。但是通过索引定位可以找到,伪代码如下:dt.rows[1][“Result”].ToString() //value is True , and cell type is string
dt.row.defaultview.rowfilter(“Result = ‘True’ ”).rows.count //value is 0, change filter string with “ Result = true” or “ Result = 1”, then application thow an error
之后通过手动给Datatable对应的单元格赋值”True” , string 就可以通过rowfilter找到。
3. 调整smartgrid的列,以及其控件大小无效。后来在smartgrid.resize事件里执行修改,问题解决。
猜测 是否所有调整控件布局的操作都要在对应的resize中执行?
4. SmartGrid自定义列combox时发觉一个奇怪的问题,在将combox添加到对应的列以后,并且combox的DataSource也已经有值,但是combox的Items.count = 0。在单击单元格时,即便该单元格已经有值(下拉项的其中一个),也会在单击事件(smartgrid_cellclick)执行之前,将该单元格对应数据改成combox的第一项。Smartgrid的cell如此,对应的datatable的cell也如此。
后来用2个DataTable(一个不动,一个绑定smartgrid)解决该问题,但终不得其解。
SmartGrid在使用时会有一些很特殊的情况,其控件也在一直更新,但是公司不可能一直买最新的。在使用上也需要花时间学习,最好还是能用自己的控件。功能如果都加上去可能也会变得很臃肿,是不是能通过继承/接口去实现某个功能,如锁定行,单元格编辑等这样控件在处理上可能会提高点效率。