C# 带有时间格式的日期时间选择器值范围
我对dataTimePicker范围有问题。我必须制作一个用户界面,用户只能设置特定的时间。此范围为:C# 带有时间格式的日期时间选择器值范围,c#,winforms,datetimepicker,C#,Winforms,Datetimepicker,我对dataTimePicker范围有问题。我必须制作一个用户界面,用户只能设置特定的时间。此范围为:22:00(晚上10点)到次日6:00(早上6点)。仅此范围内的值可用 我用.MinDate=“2010-01-01 22:00”和创建了一个控件。MaxDate=2010-01-02 6:00但是当我使用只有时间格式的dataTimePicker和向上向下按钮时,在两天的边界处出现了问题。当用户在23:00点单击向上箭头时,值翻转到22:00,而不是第二天的00:00。同样的问题是,当您尝试通
22:00(晚上10点)到次日6:00(早上6点)
。仅此范围内的值可用
我用.MinDate=“2010-01-01 22:00”和创建了一个控件。MaxDate=2010-01-02 6:00
但是当我使用只有时间格式的dataTimePicker和向上向下按钮时,在两天的边界处出现了问题。当用户在23:00点单击向上箭头时,值翻转到22:00,而不是第二天的00:00。同样的问题是,当您尝试通过键盘输入值时,例如4:00。控件拒绝此更改,并且不会将日期翻转到下一天
我尝试过使用ValueChange
事件,但它不起作用。更改小时值不会更改DateTime
值的当前日期,因此当前日期中有两个有效小时:22.00
和23:00
这是一种可能的解决方法,手动调整当前的日期
值。设置:
DateTimePicker.Value
到最短日期(01-01-2010 22:00 PM
)。
MinDate
仅将值转换为最小日期值(1/1/2010
)。
MaxDate
最大日期时间(2010年1月2日上午6:00
)的值。
格式
到自定义
CustomFormat
至HH:mm
dtPickerMinHour
至最低可接受小时数(或使用DTP标签或其他任何方式)
订阅DateTimePicker的值更改
事件:
int dtPickerMinHour = 22;
bool timeAdjustedByCode = false;
private void dateTimePicker1_ValueChanged(object sender, EventArgs e)
{
if (timeAdjustedByCode) { timeAdjustedByCode = false; return; }
var dtp = sender as DateTimePicker;
var dt = dtp.Value;
if (dt.Hour == 0) {
if (dt.Date == dtp.MinDate) {
timeAdjustedByCode = true;
dtp.Value = dt.AddDays(1);
}
else {
timeAdjustedByCode = true;
dtp.Value = dt.AddDays(-1);
}
}
else if (dt.Hour < dtPickerMinHour && dt.Date == dtp.MinDate.Date) {
timeAdjustedByCode = true;
dtp.Value = dt.AddHours(1);
}
}
int-dtPickerMinHour=22;
bool timeAdjustedByCode=false;
私有无效dateTimePicker1\u值已更改(对象发送方,事件参数e)
{
if(timeAdjustedByCode){timeAdjustedByCode=false;返回;}
var dtp=作为日期时间选择器的发送方;
var dt=dtp.值;
如果(dt.Hour==0){
如果(dt.Date==dtp.MinDate){
timeAdjustedByCode=真;
dtp.Value=dt.AddDays(1);
}
否则{
timeAdjustedByCode=真;
dtp.Value=dt.AddDays(-1);
}
}
else if(dt.Hour
是WinForms/WPF/UWP吗?你能分享你的代码吗?