Kissmint 发表于 2015-5-15 09:25:00

GcNumberCell的表示问题

需求:有个数量单元格,输入限制 Fields="##,###,##0",这样输入“99999999”是可以的。
现在有个业务是将这个数量转成负值表示到multiRow上,因为“-99999999”超出了Fields指定的位数,MultiRow表示时就会DataError。

问:Fields不能在程序里动态设定,要怎么才能让这个负值正常表示到MultiRow上

Carl 发表于 2015-5-15 09:57:00

Fields应该为 "##,###,##0;;;-;;"
GcNumber的Format格式为 "数值部分Pattern;正数前缀;正数后缀;负数前缀;负数后缀"。
另外,确保你的GcNumberCell的MinValue和MaxValue设置正确,MinValue应该小于-99999999,ValueSign属性为NoControl,这样才可以接收负数Value。

Kissmint 发表于 2015-5-15 11:19:00

MinValue修改成-99999999的确可以解决问题。
不过我现在要跟VBA的定型入力“##,###,###”保持一致(只能输入-9999999)的话,
没有别的解决办法了吗

Carl 发表于 2015-5-15 13:50:00

不是很理解你的问题,能不能说的详细一点,最好给一个Demo或者程序的截图。能否描述一下,你期望这个GcNumberCell可以接受什么样的输入,不能接受什么样的输入?

Kissmint 发表于 2015-5-15 14:24:00

问题补充:现在在移植一个VBA系统到.NET,
原VBA系统中,数量指定了输入格式(##,###,###),输入范围为-9,999,999~99,999,999。
有个业务是这个数量登入DB后,再检索出来以负值表示到画面上。
输入最大99999999,插入DB,然后再检索出来,
在VBA中可以正常显示(-99,999,999),只是输入格式限制就自动失效了(推测VBA中的输入格式限制不到 拷贝粘贴,后台赋值)

Carl 发表于 2015-5-15 15:17:00

了解了。请尝试下面的方式:
把Cell的输入格式设定为"##,###,###",这样Cell就可以显示 -99,999,999~99,999,999。
然后挂上GcMultiRow的EditingControlShowing事件,在事件处理函数中,把EditingControl (类型可以转为GcNumberEditingControl,而不是GcNumberCell)的MinValue设置为-9.999,999。这样就可以对输入进行限制。
这样做输入的范围就是 -9,999,999~99,999,999。

Alice 发表于 2015-5-15 16:04:00

回复 6楼Carl的帖子

感谢@Carl的回复。

@Kissmint 请问你的问题解决了么?

Kissmint 发表于 2015-5-15 17:24:00

问题已经解决
非常感谢Carl大牛!:hjyzw:

Alice 发表于 2015-5-15 17:37:00

回复 8楼Kissmint的帖子

好的。
谢谢你的反馈。
页: [1]
查看完整版本: GcNumberCell的表示问题