找回密码
 立即注册

QQ登录

只需一步,快速开始

bj_zm

中级会员

48

主题

169

帖子

713

积分

中级会员

积分
713

活字格认证微信认证勋章

bj_zm
中级会员   /  发表于:2015-2-9 10:13  /   查看:7400  /  回复:8
C1DateTimePicker
比如我点击时间部分,然后输入15.离开焦点时能自动补充为15:00:00
而现在是离开焦点,自动还原成原来的时间了。最终使用者对于这样写还是感觉麻烦,有没有什么解决办法?





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

8 个回复

倒序浏览
Alice
社区贡献组   /  发表于:2015-2-9 14:59: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的时间格式,比如:
  1. DateTimeFormatInfo dtfi = GetCurrentDateTimeFormat();
  2. dtfi.ShortTimePattern = "your value"; // or the same for the LongTimePattern
复制代码
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
bj_zm
中级会员   /  发表于:2015-2-9 20:44:00
板凳
回复 2楼Alice的帖子

那只是举个例子,写3也是不行。必须写3:00:00才认,否则会恢复原来的时间。
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2015-2-10 09:19: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。

请检查你的代码逻辑是否有问题,从而影响了正确性。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
bj_zm
中级会员   /  发表于:2015-2-10 09:24:00
5#
回复 4楼Alice的帖子

哦,你理解有误了。 我知道移到小时部分改没问题
我说的是默认全选中的,直接改。不是选到某一部分。
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2015-2-10 14:31:00
6#
回复 5楼bj_zm的帖子

你的意思是,全选Time区域的时间,然后键盘敲入一个数字,然后离开Focus?

这个时候是会自动的转换成原本正确的时间,这是C1DateTimeEditor的设计。因为它接受的是一个时间类型的,而你输入的是数字类型的。因此类型是不正确的。比如输入5,控件不能自动猜测出客户需要的是5:00:00,还是00:05:00或是00:00:05。因此强制转换是不合理的。

实际上C1DateTimePicker是由C1DatePicker和C1TimeEditor两部分组成。你可以获取到C1TimeEditor,使用它的TextValidationError事件。当数据出现异常触发此事件的时候,尝试将值转成TimeSpan的类型。
  1. void timeEditor_TextValidationError(object sender, TextValidationErrorEventArgs e)
  2.         {
  3.             timeEditor.Value = new TimeSpan(Int32.Parse(e.Text), 0, 0);
  4.         }
复制代码
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
bj_zm
中级会员   /  发表于:2015-2-10 14:49:00
7#
回复 6楼Alice的帖子

就这个意思,估计差不多,我试试。谢谢,试了好几个方法就没试这个验证错误事件。
回复 使用道具 举报
bj_zm
中级会员   /  发表于:2015-2-10 15:12:00
8#
回复 6楼Alice的帖子

可以了,感谢。
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2015-2-10 15:24:00
9#
回复 8楼bj_zm的帖子

谢谢你的反馈。

此问题结束,如果有新问题请开帖。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部