Previous topicNext topic
Help > 开发指南 > 窗体开发 > 控件参考 > 控件参考 > 通用成员 > C1TextBox > 属性 >
格式化
属性名称 分类 说明
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值,所以这种模式只适合只读场景。