How to contol the time interval in a DateTimePicker

前端 未结 6 1729
梦毁少年i
梦毁少年i 2020-12-20 19:33

I have a DateTimePicker control on a form specified like so:

dtpEntry.Format = DateTimePickerFormat.Custom;
dtpEntry.CustomFormat = \"dd/MM/         


        
6条回答
  •  南方客
    南方客 (楼主)
    2020-12-20 19:38

    It's possible by watching the ValueChanged event and override the value. This sample form worked well:

    public partial class Form1 : Form {
        public Form1() {
            InitializeComponent();
            dateTimePicker1.CustomFormat = "dd/MM/yyyy hh:mm";
            dateTimePicker1.Format = DateTimePickerFormat.Custom;
            dateTimePicker1.ShowUpDown = true;
            dateTimePicker1.Value = DateTime.Now.Date.AddHours(DateTime.Now.Hour);
            mPrevDate = dateTimePicker1.Value;
            dateTimePicker1.ValueChanged += new EventHandler(dateTimePicker1_ValueChanged);
        }
        private DateTime mPrevDate;
        private bool mBusy;
    
        private void dateTimePicker1_ValueChanged(object sender, EventArgs e) {
            if (!mBusy) {
                mBusy = true;
                DateTime dt = dateTimePicker1.Value;
                if ((dt.Minute * 60 + dt.Second) % 300 != 0) {
                    TimeSpan diff = dt - mPrevDate;
                    if (diff.Ticks < 0) dateTimePicker1.Value = mPrevDate.AddMinutes(-5);
                    else dateTimePicker1.Value = mPrevDate.AddMinutes(5);
                }
                mBusy = false;
            }
            mPrevDate = dateTimePicker1.Value;
        }
    }
    

提交回复
热议问题