C# datetimepicker 使用最大和最小日期设置最大和最小时间
C# datetimepicker set max and min time with max and min date
我在 Winform 应用程序中有一个 datetimepicker 控件。我想用最小日期和最大日期设置最小时间和最大时间。就像每天上午 9 点到晚上 18 点应该是可选的,日期时间选择器应该只在今天到 15 天后显示。
baslangicDateTimePicker.Format = DateTimePickerFormat.Custom;
baslangicDateTimePicker.CustomFormat = "dd/MM/yyyy hh tt";
baslangicDateTimePicker.MinDate = DateTime.Now.AddDays(1).Date.AddHours(9);
baslangicDateTimePicker.MaxDate = DateTime.Now.AddDays(14).Date.AddHours(17);
我试过这样,但它在每天的最短和最长时间内不起作用。
private void baslangicDateTimePicker_ValueChanged(object sender, EventArgs e)
{
if (baslangicDateTimePicker.Value.ToShortTimeString() == "18:00")
{
DateTime temp = baslangicDateTimePicker.Value.AddDays(1);
if (temp >= baslangicDateTimePicker.MaxDate.Date)
baslangicDateTimePicker.Value.AddHours(-1);
else
baslangicDateTimePicker.Value = temp.AddHours(-9);
}
if (baslangicDateTimePicker.Value.ToShortTimeString() == "08:00")
{
DateTime temp = baslangicDateTimePicker.Value.AddDays(-1);
if (temp <= baslangicDateTimePicker.MinDate.Date)
baslangicDateTimePicker.Value.AddHours(1);
else
baslangicDateTimePicker.Value = temp.AddHours(9);
}
}
这样解决了我的问题。它有点乱,写得不好,但可以工作,可以给其他人提供意见。感谢Flydog57的建议
我在 Winform 应用程序中有一个 datetimepicker 控件。我想用最小日期和最大日期设置最小时间和最大时间。就像每天上午 9 点到晚上 18 点应该是可选的,日期时间选择器应该只在今天到 15 天后显示。
baslangicDateTimePicker.Format = DateTimePickerFormat.Custom;
baslangicDateTimePicker.CustomFormat = "dd/MM/yyyy hh tt";
baslangicDateTimePicker.MinDate = DateTime.Now.AddDays(1).Date.AddHours(9);
baslangicDateTimePicker.MaxDate = DateTime.Now.AddDays(14).Date.AddHours(17);
我试过这样,但它在每天的最短和最长时间内不起作用。
private void baslangicDateTimePicker_ValueChanged(object sender, EventArgs e)
{
if (baslangicDateTimePicker.Value.ToShortTimeString() == "18:00")
{
DateTime temp = baslangicDateTimePicker.Value.AddDays(1);
if (temp >= baslangicDateTimePicker.MaxDate.Date)
baslangicDateTimePicker.Value.AddHours(-1);
else
baslangicDateTimePicker.Value = temp.AddHours(-9);
}
if (baslangicDateTimePicker.Value.ToShortTimeString() == "08:00")
{
DateTime temp = baslangicDateTimePicker.Value.AddDays(-1);
if (temp <= baslangicDateTimePicker.MinDate.Date)
baslangicDateTimePicker.Value.AddHours(1);
else
baslangicDateTimePicker.Value = temp.AddHours(9);
}
}
这样解决了我的问题。它有点乱,写得不好,但可以工作,可以给其他人提供意见。感谢Flydog57的建议