以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [分享]标点符号修改之委曲求全 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=8030) |
||||
-- 作者:qtcks -- 发布时间:2010/8/30 22:37:00 -- [分享]标点符号修改之委曲求全 查阅N多资料,终于找到一变通方法来实现全球化区域性的信息的应用 案例:由于客户在欧洲,其数值的小数点字符与分组字符与中国的正好相反。(之前的方案BUG也是由小数点修改后引起的崩溃) 如表示十万零八百九十七点二五六 zh-CN: 100,097.256 我的客户需要显示为:100.097,256 正好相反。
根据以上情况,整体思路,还是调用操作系统的不同国家区域语言设置。 System.Globalization.CultureInfo.CreateSpecificCulture("en-US") \'调用英语-美国 System.Globalization.CultureInfo.CreateSpecificCulture("it-IT") \'调用意大利-意大利 国家代码可以参考:http://msdn.microsoft.com/zh-cn/library/system.globalization.cultureinfo(VS.80).aspx
设置当前程序的区域语言为 System.Threading.Thread.CurrentThread.CurrentCulture
这里重点警告一下,用到区域语言的哪个部分,就调用哪个部分。 我之前的实验就犯了这个错误,导致事件代码无法编辑。
在这个案例中,由于操作的人还是华人,所以,只用到它的数值显示一块。 具体的代码如下。 System.Threading.Thread.CurrentThread.CurrentCulture.NumberFormat = _ 白话文解释:设置当前程序的区域语言,数值部分 =系统区域语言中,意大利语,数值部分。
好了,到这里为止,其实就是前天犯错的步骤。 那么接下来就要在项目保存的时候, 将这些设置还原。 如果不还原,导致的后果,就是版本无法打开。
我在保存项目事件中,设置如下代码 System.Threading.Thread.CurrentThread.CurrentCulture.NumberFormat = _
附录代码: 以下内容为程序代码: 1 项目事件 2 3 BeforeOpenProject 4 5 System.Threading.Thread.CurrentThread.CurrentCulture.NumberFormat = _ 6 System.Globalization.CultureInfo.CreateSpecificCulture("it-IT").NumberFormat 7 8 MainTableChanged 9 10 System.Threading.Thread.CurrentThread.CurrentCulture.NumberFormat = _ 11 System.Globalization.CultureInfo.CreateSpecificCulture("it-IT").NumberFormat 12 13 CurrentTableChanged 14 15 System.Threading.Thread.CurrentThread.CurrentCulture.NumberFormat = _ 16 System.Globalization.CultureInfo.CreateSpecificCulture("it-IT").NumberFormat 17 18 AfterSaveProject 19 20 System.Threading.Thread.CurrentThread.CurrentCulture.NumberFormat = _ 21 System.Globalization.CultureInfo.CreateSpecificCulture("en-US").NumberFormat 22 Syscmd.Project.Save() 23 24 计划管理 25 26 表事件 27 28 窗口表事件 29 30 窗口与控件事件 31 32 窗口1_AfterLoad 33 34 System.Threading.Thread.CurrentThread.CurrentCulture.NumberFormat = _ 35 System.Globalization.CultureInfo.CreateSpecificCulture("it-IT").NumberFormat 36 37 窗口1_BeforeClose 38 39 System.Threading.Thread.CurrentThread.CurrentCulture.NumberFormat = _ 40 System.Globalization.CultureInfo.CreateSpecificCulture("en-US").NumberFormat 41 42 窗口1_Enter 43 44 System.Threading.Thread.CurrentThread.CurrentCulture.NumberFormat = _ 45 System.Globalization.CultureInfo.CreateSpecificCulture("en-US").NumberFormat 46 47 窗口1_Leave 48 49 System.Threading.Thread.CurrentThread.CurrentCulture.NumberFormat = _ 50 System.Globalization.CultureInfo.CreateSpecificCulture("it-IT").NumberFormat 51 52 自定义函数 53 54 全局代码 55 56 菜单事件 57 58 59
|
||||
-- 作者:qtcks -- 发布时间:2010/8/30 22:40:00 -- 打开项目之前 System.Threading.Thread.CurrentThread.CurrentCulture.NumberFormat = _
‘============================= 保存项目之后 System.Threading.Thread.CurrentThread.CurrentCulture.NumberFormat = _ Syscmd.Project.Save()
这2段代码就可以搞定了。
通过这个方法,还是在窗口应用中,编辑模式与查看模式中来切换,顺从用户的输入习惯。呵呵。 [此贴子已经被作者于2010-8-30 22:41:51编辑过]
|
||||
-- 作者:狐狸爸爸 -- 发布时间:2010/8/30 22:57:00 -- 你很狡猾 |
||||
-- 作者:czy -- 发布时间:2010/8/30 23:07:00 -- 白天我倒是测试过,我还是用了lxl的方法,估计效果和楼主的也差不多。
\'AfterOpenProject事件代码
\'BeforeCloseProject事件代码 [此贴子已经被作者于2010-8-30 23:07:15编辑过]
|
||||
-- 作者:qtcks -- 发布时间:2010/9/22 0:05:00 -- 以下是引用qtcks在2010-8-30 22:40:00的发言:
打开项目之前 System.Threading.Thread.CurrentThread.CurrentCulture.NumberFormat = _
![]() ![]() label 标签字体变大了。郁闷哦。 |
||||
-- 作者:qtcks -- 发布时间:2011/2/22 13:57:00 -- 通过 DrawCell 绘制单元格 来实现数据的多语言格式化。完美解决。 If e.Col.Name = "第二列" Then |
||||
-- 作者:狐狸爸爸 -- 发布时间:2011/2/22 14:29:00 -- 呵呵,在全局代码中加上:
Public nfi As System.Globalization.NumberFormatInfo = New System.Globalization.CultureInfo("it-IT", False).NumberFormat
If e.Col.Name = "第二列" Then |