属性名称 | 分类 | 说明 |
CustomFormat | 格式化 | 获取或设置在控件中指定使用的自定义格式。FormatType属性是FormatType.CustomFormat。 |
DisplayFormat | 格式化 | 获取控件处于显示模式时用于显示值的格式。 |
EditFormat | 格式化 | 获取控件处于编辑模式(具有输入焦点且不是只读)时用于显示值的格式。 |
TextDetached | 格式化 | 获取或设置控件的Text属性值和Value属性值是否隔离(不同步)。如果设置为True的话,修改Text或Value中的任意属性都不会修改另外一个属性的值,如果设置为False,则修改Text或Value中的任意属性都会同步更新另外一个属性的值。默认值为False。我们的字典功能就是通过修改此属性为True,然后通过维护Text和Value的值来实现的。 |
FormatType | 格式化 | 获取或设置确定格式化方法的枚举值,包括指定的标准.NET格式、自定义格式和编程格式。 |
我们想要设置控件的格式化类型时,可以考虑直接设置FormatType属性,FormatType属性是一个FormatTypeEnum枚举类型,主要有下面一些值。
名称 | 值 | 说明 |
DefaultFormat | 0 | 使用TypeConverter.ConvertToString()进行转换。 |
UseEvent | 1 | 在Formatting (或者Parsing)事件中由用户代码执行的转换。 |
CustomFormat | 2 | 格式化使用分配给CustomFormat属性的字符串。即在CustomFormat属性里面设置“格式化”信息。 |
GeneralNumber | 3 | 使用定点或科学记数法将数字转换为最紧凑的十进制形式。 |
Currency | 4 | 数字转换为表示货币金额的字符串。 |
FixedPoint | 5 | 数字被转换为“ddd.ddd…”形式的字符串,其中每个“d”表示一个数字(0-9)。 |
StandardNumber | 6 | 数字被转换为形式为“-d,ddd,ddd.ddd…”的字符串,其中每个“d”表示一个数字(0-9)。 |
Percent | 7 | 数字将转换为表示由属性或属性定义的百分比的字符串。 |
Scientific | 8 | 数字被转换为形式为“-d.ddd…E+ddd”或“-d.ddd…E+ddd”,其中每个“d”表示一个数字(0-9)。 |
RoundTrip | 9 | 往返说明符保证转换为字符串的数值将被解析回相同的数值。仅浮点类型支持此格式。 |
Integer | 10 | 将数字显示为包含十进制(以10为基数)格式的数字值的字符串。此格式仅支持整数类型。 |
Hexadecimal | 11 | 数字转换为十六进制数字串。此格式仅支持整数类型。 |
YesNo | 12 | 转换为布尔值,并显示“否”表示假,显示“是”表示真。 |
TrueFalse | 13 | 转换为布尔值并显示True或False。 |
OnOff | 14 | 转换为布尔值并显示为false,显示为true。 |
GeneralDate | 15 | 一般日期/时间模式(短时间)。 |
LongDate | 16 | 根据指定的CultureInfo的长日期格式显示日期。 |
MediumDate | 17 | 使用中日期格式(“dd-MMM-yy”)显示日期。 |
ShortDate | 18 | 使用指定的CultureInfo的短日期格式显示日期。 |
LongTime | 19 | 使用区域设置的长时间格式显示时间;包括小时、分钟和秒。 |
MediumTime | 20 | 使用小时和分钟以及AM/PM指示器(“hh:mm tt”)以12小时格式显示时间。 |
ShortTime | 21 | 使用24小时格式显示时间,例如17:45。 |
LongDateShortTime | 22 | 根据指定的CultureInfo格式显示长日期和短时间。 |
LongDateLongTime | 23 | 根据指定的CultureInfo格式显示长日期和长时间。 |
ShortDateShortTime | 24 | 根据指定的CultureInfo格式显示短日期和短时间。 |
ShortDateLongTime | 25 | 根据指定的CultureInfo格式显示短日期和长时间。 |
MonthAndDay | 26 | 显示日期的月份和日期。 |
DateAndTimeGMT | 27 | 将日期和时间格式化为格林尼治标准时间(GMT)。 |
DateTimeSortable | 28 | 将日期和时间格式化为可排序索引。 |
GMTSortable | 29 | 将日期和时间格式化为GMT可排序索引。 |
LongDateTimeGMT | 30 | 将长日期和长时间格式化为GMT。 |
YearAndMonth | 31 | 将日期格式化为年和月。 |
控件的显示格式其实是分两种的,一种是编辑时的格式,另外一种是显示时的格式。如果我们希望编辑时的格式和显示时的格式一致的话,我们完全可以通过FormatType这一个属性设置即可,遇到一些需要特殊处理的,可以将FormatType设置为FormatTypeEnum.CustomFormat,然后在CustomFormat属性中按照“格式化”里面介绍的格式来定制。另外,如果自定义格式化还不能满足要求的话,可以考虑将FormatType设置为FormatTypeEnum.UseEvent,然后在Formatting (或者Parsing)事件中写代码来实现自定义格式显示。
格式化还有另外一个思路,那就是利用TextDetached属性,将Text和Value的关联隔离开。然后通过代码维护Text和Value的值来实现另类的格式化。这种实现方式取控件的值时要注意了,Text和Value的值也是不一样的。请根据实际需要取值。
一、直接设置FormatType
各个格式类型的显示效果如下:
这里的日期格式一般是根据系统设置的日期格式显示的。所以如果想显示固定的日期格式,可以考虑自定义格式。
二、CustomFormat
自定义格式化也很简单,只需要将格式类型(FormatType)属性设置为CustomFormat,然后再根据“格式化”规则设置一下自定义格式即可。
三、UseEvent
先将格式类型(FormatType)属性设置为UseEvent,然后在Formatting事件中写代码。我们只需要根据e.Value的值,然后根据我们的需要,将最终想显示的文本赋值给e.Text属性即可。
Vb.Net |
Public Sub SmDateEdit18_Formatting(sender As Object,e As C1.Win.C1Input.FormatEventArgs) '获得值 Dim dtTime As DateTime=e.Value '根据自己的需要将日期进行格式化,只需要将最终显示的文本赋值给e.Text即可 e.Text= dtTime.Year.ToString() + "年" + dtTime.GetWeekOfYear().ToString() +"周" End Sub |
C# |
public void SmDateEdit18_Formatting(object sender, C1.Win.C1Input.FormatEventArgs e) { // 获得值 DateTime dtTime = e.Value; // 根据自己的需要将日期进行格式化,只需要将最终显示的文本赋值给e.Text即可 e.Text = dtTime.Year.ToString() + "年" + dtTime.GetWeekOfYear().ToString() + "周"; } |
最终执行结果如下:
四、显示格式与编辑格式区分
有时候我们需要显示的格式与编辑时的格式不一致,比如说数据的百分比。正常情况下,我们希望显示的时候按23.5%这种效果显示,但是在编辑的时候,我们还是按小数点的方式编辑,要不然编辑的时候也按百分比输入,那个就无法正常输入了。
显示货币符号这种格式化如果想正常编辑的话,也需要将编辑格式和显示格式区分开来进行设置。
五、TextDetached
我们只需要知道,一旦TextDetached属性被设置为True之后,Text和Value属性就是两个单独没有关联的属性了,修改他们当中的任何一个都不会影响另外一个属性的值。我们只需要分别维护好这两个属性的值即可实现特殊的格式显示。Text是字符串类型,Value是Object类型。Text是显示的文本,Value是隐藏在背后的控件的值,与表绑定的值。但是因为编辑的时候,我们必须显示Value值,所以这种模式只适合只读场景。