今天要改个东西,说是要改个C/S的日期时间框的默认值,查了下MSDN,使用DATETIMEPICKER的format属相和
customformat属性来实现.
最开始自己写了个测试的代码段:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

using System.Globalization;

namespace TimePickerApplication
{
    public class Form1 : Form
    {
        public Form1()
        {
            InitializeTimePicker();
        }

        private DateTimePicker dtpFrom;
        private DateTimePicker dtpTo;

        private void InitializeTimePicker()
        {
            dtpFrom = new DateTimePicker();
            dtpTo = new DateTimePicker();

            dtpFrom.Format = DateTimePickerFormat.Custom;
            dtpFrom.CustomFormat = "MM/dd/yyyy HH:mm";
            dtpFrom.Value= DateTime.ParseExact("00:01", "HH:mm",null);

            dtpTo.Format = DateTimePickerFormat.Custom;
            dtpTo.CustomFormat = "MM/dd/yyyy HH:mm";
            dtpTo.Value= DateTime.ParseExact("23:59", "HH:mm",null);

            dtpFrom.Location = new Point(10, 10);
            dtpTo.Location = new Point(10, 50);

            dtpFrom.Width = 130;
            dtpTo.Width = 130;
            Controls.Add(dtpFrom);
            Controls.Add(dtpTo);
        }

        [STAThread]

        static void Main()
        {
            Application.EnableVisualStyles();
            Application.Run(new Form1());
        }

    }
}

这样写好以后,效果如下

这样是出来了,日期可以用下拉菜单去改,但是时间不能自己控制.于是想到了用DateTimePicker.Value.Hour, Minute,不过刚回过神,这2个不都是Readonly的嘛 = =!NND.那怎么办呢...

于是乎想到了用DateTime.ParseExact()来实现value的默认值.然后再事件里触发再去记录最后改动的值,事件触发就不写了,很简单很容易,主要是这个DateTime.ParseExact(),后来加入了红色的代码段,OK.
最后效果图如下:

如果想详细看看这个
DateTime.ParseExact()请参考这里:
System.DateTime.ParseExact()

DateTimePicker的相关信息请参考这里:
System.Windows.Forms.DateTimePicker()

日期时间字符串格式参考这里
Date and Time Format Strings