我在Winform应用程序中有一个datetimepicker控件。我想用最小日期和最大日期设置最小时间和最大时间。就像每天的上午09点到晚上18点一样,应该可以选择,并且datetimepicker仅应在今天到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的建议。
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的建议。