DevExpress DisplayFormat格式化操作

 1     public class MyExamFormat : IFormatProvider, ICustomFormatter
 2         {
 3             public string NumberToChinese(int num)
 4             {
 5                 string numStr = "0123456789";
 6                 string chineseStr = "零一二三四五六七八九";
 7                 if (num >= 0 && num <= 9) { return chineseStr[numStr.IndexOf(num.ToString()[0])].ToString(); }
 8                 else if (num >= 10 && num <= 19) { if (num == 10) { return ""; } return "" + chineseStr[numStr.IndexOf(num.ToString()[1])].ToString(); }
 9                 else if (num >= 20 && num <= 99)
10                 {
11                     if (num % 10 == 0) { return chineseStr[numStr.IndexOf(num.ToString()[0])].ToString() + ""; }
12                     else return chineseStr[numStr.IndexOf(num.ToString()[0])].ToString() + "" + chineseStr[numStr.IndexOf(num.ToString()[1])].ToString();
13                 }
14                 else if (num >= 100 && num <= 999)
15                 {
16                     if (num % 100 == 0) { return chineseStr[numStr.IndexOf(num.ToString()[0])].ToString() + ""; }
17                     else return chineseStr[numStr.IndexOf(num.ToString()[0])].ToString() + "" +
18                       ((int.Parse(num.ToString().Substring(1).ToString()).ToString().Length != (num.ToString().Length - 1)) ?
19                          "" + NumberToChinese(int.Parse(num.ToString().Substring(1)))
20                         : NumberToChinese(int.Parse(num.ToString().Substring(1))));
21                 }
22                 else if (num >= 1000 && num <= 9999)
23                 {
24                     if (num % 1000 == 0) { return chineseStr[numStr.IndexOf(num.ToString()[0])].ToString() + ""; }
25                     else return
26                          chineseStr[numStr.IndexOf(num.ToString()[0])].ToString() + "" +
27                       ((int.Parse(num.ToString().Substring(1).ToString()).ToString().Length != (num.ToString().Length - 1)) ?
28                          "" + NumberToChinese(int.Parse(num.ToString().Substring(1)))
29                         : NumberToChinese(int.Parse(num.ToString().Substring(1))));
30                 }
31                 return num.ToString();
32             }
33 
34             public object GetFormat(Type formatType)
35             {
36                 if (formatType == typeof(ICustomFormatter))
37                 {
38                     return this;
39                 }
40                 else return null;
41             }
42 
43             public string Format(string format, object arg, IFormatProvider formatProvider)
44             {
45                 return "" + NumberToChinese(int.Parse(arg + "")) + "";
46             }
47         }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章