C#datetimepicker设置最大和最小时间以及最大和最小日期

问题描述 投票:0回答:2

我在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);

我尝试过这种方法,但是每天都没有最小和最大时间。

c# winforms datetimepicker
2个回答
1
投票
 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的建议。


0
投票
 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的建议。

© www.soinside.com 2019 - 2024. All rights reserved.