Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 带有时间格式的日期时间选择器值范围_C#_Winforms_Datetimepicker - Fatal编程技术网

C# 带有时间格式的日期时间选择器值范围

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。同样的问题是,当您尝试通

我对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。同样的问题是,当您尝试通过键盘输入值时,例如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吗?你能分享你的代码吗?