C1DateTimePicker 的自动补充文本
C1DateTimePicker比如我点击时间部分,然后输入15.离开焦点时能自动补充为15:00:00
而现在是离开焦点,自动还原成原来的时间了。最终使用者对于这样写还是感觉麻烦,有没有什么解决办法?
回复 1楼bj_zm的帖子
C1DateTimePicker的时间显示默认情况下是12小时的,下面3点是"3:00:00",而不是"15:00:00“。
当你输入15的时候是不合法的,因此会自动跳转到合法的原来的值。
如果你需要输入15:00代替3点,需要将时间变成24小时格式的。
目前有两种方式:
1.设置TimeFormat为Custom,然后设置CustomFormat属性为你需求的,比如"HH:mm:ss".
但是CustomFormat属性在C1DateTimePicker控件里是隐藏的,所以你需要在C1DateTimePicker里search倒C1TimeEditor,然后设置它的CustomFormat属性。
2.在应用程序的任何开始的地方,改变当前culture的时间格式,比如:
DateTimeFormatInfo dtfi = GetCurrentDateTimeFormat();
dtfi.ShortTimePattern = "your value"; // or the same for the LongTimePattern
回复 2楼Alice的帖子
那只是举个例子,写3也是不行。必须写3:00:00才认,否则会恢复原来的时间。 回复 3楼bj_zm的帖子
没有重现该问题。
测试步骤:
1.新建一个wpf工程。
2.从工具箱拖一个C1DateTimePicker到页面。
3.运行该工程。
4.点击C1DateTimePicker的Time区域,进入编辑状态。将Focus移到12的位置。
5.删除掉12,并且输入3/或1/或10.
6.鼠标点到其他地方离开Focus。
Time区域的文字会自动从12:00:00 AM变成3:00:00 AM。
测试版本2014V3. 控件C1DateTimePicker。
请检查你的代码逻辑是否有问题,从而影响了正确性。 回复 4楼Alice的帖子
哦,你理解有误了。 我知道移到小时部分改没问题
我说的是默认全选中的,直接改。不是选到某一部分。 回复 5楼bj_zm的帖子
你的意思是,全选Time区域的时间,然后键盘敲入一个数字,然后离开Focus?
这个时候是会自动的转换成原本正确的时间,这是C1DateTimeEditor的设计。因为它接受的是一个时间类型的,而你输入的是数字类型的。因此类型是不正确的。比如输入5,控件不能自动猜测出客户需要的是5:00:00,还是00:05:00或是00:00:05。因此强制转换是不合理的。
实际上C1DateTimePicker是由C1DatePicker和C1TimeEditor两部分组成。你可以获取到C1TimeEditor,使用它的TextValidationError事件。当数据出现异常触发此事件的时候,尝试将值转成TimeSpan的类型。
void timeEditor_TextValidationError(object sender, TextValidationErrorEventArgs e)
{
timeEditor.Value = new TimeSpan(Int32.Parse(e.Text), 0, 0);
} 回复 6楼Alice的帖子
就这个意思,估计差不多,我试试。谢谢,试了好几个方法就没试这个验证错误事件。 回复 6楼Alice的帖子
可以了,感谢。 回复 8楼bj_zm的帖子
谢谢你的反馈。
此问题结束,如果有新问题请开帖。
页:
[1]