UI应该保持不变,我不想这样做:
dateTimePicker1.Format = DateTimePickerFormat.Custom;
dateTimePicker1.CustomFormat = "mm-yyyy";
dateTimePicker1.ShowUpDown = true;
用户可以选择年和月,也可以将DateTimePicker更改为Month / Year选择器,也可以将MonthCalendar更改为。我不想使用第三方控件,但是如果它将是唯一的答案,我将为我提供任何免费的月/年选择器控件。
这里是一个简单的DateTimePicker自定义控件,它预定义了自定义DateTime格式并修改了MonthCalendar视图,configuring仅显示打开时的月份和年份。
我添加了一个公共属性ShowToday
,该属性可以指定MonthCalendar弹出窗口是否应在Calendar界面的底部显示Today
日期。
自定义控件重写OnDropDown以获取MonthCalendar句柄的弹出窗口,发送DTM_GETMONTHCAL
消息,并更改其当前视图,发送DTM_GETMONTHCAL
,并指定MCM_SETCURRENTVIEW
作为value参数。
这是它的外观:
MCM_SETCURRENTVIEW
MCMV_YEAR
自定义格式用于确定在系统/数据库中捕获日期的方式,而与用户选择的内容无关,它不用于限制用户选择月份或年份。