我创建了dateTimePicker
,我只想选择月份和年份。所以,我把以下代码:
dateTimePicker2.Format = DateTimePickerFormat.Custom;
dateTimePicker2.CustomFormat = "MM yyyy";
dateTimePicker2.ShowUpDown = true;
每当我用箭头滚动月份时,一旦到达二月,则值为空,而不是二月。
我还尝试了customformats
MMM
和MMMM
,但保留了相同的问题。我尝试了不同的年份,但每年都没有显示二月。我也尝试使用新的datetimepicker
,但仍然遇到同样的问题。
我只能在日历中选择,而不是showUpDown = true
,但仍然不能使用向上/向下箭头。它没有自定义格式,但我不想看到这一天,我只想选择月份和年份。
我正在使用Visual Studio 2010 Ultimate(10.0.40219.1.SP1)。 .NET Framework 4.0.30319 SP1。
答案 0 :(得分:2)
当用户通过上下按钮或箭头键选择值时,DateTimePicker
将不会更改未包含在其自定义格式中的元素的值。
我猜您的dateTimePicker2
最初的值为Now
,其月份为29或30,因此2月错误。
我建议您事先将1
设置为dateTimePicker2.Value.Day
。
答案 1 :(得分:1)
嗯,问题实际上与02/29
只是闰年有效日期的事实有关。要证明这一点,请滚动至2012
,然后滚动至02
。您必须实现代码以捕获无效值,并通知用户或转移到03/01
。
DateTime
有一种方法可以让你知道一年是否是闰年,这样你就不必跳过箍:DateTime.IsLeapYear(year),其中year
是int
。
以下是闰年的简短列表供您参考:
Leap Years (1800 - 2400)
1804 1808 1812 1816 1820 1824 1828 1832 1836 1840 1844 1848 1852 1856
1860 1864 1868 1872 1876 1880 1884 1888 1892 1896 1904 1908 1912 1916
1920 1924 1928 1932 1936 1940 1944 1948 1952 1956 1960 1964 1968 1972
1976 1980 1984 1988 1992 1996 2000 2004 2008 2012 2016 2020 2024 2028
2032 2036 2040 2044 2048 2052 2056 2060 2064 2068 2072 2076 2080 2084
2088 2092 2096 2104 2108 2112 2116 2120 2124 2128 2132 2136 2140 2144
2148 2152 2156 2160 2164 2168 2172 2176 2180 2184 2188 2192 2196 2204
2208 2212 2216 2220 2224 2228 2232 2236 2240 2244 2248 2252 2256 2260
2264 2268 2272 2276 2280 2284 2288 2292 2296 2304 2308 2312 2316 2320
2324 2328 2332 2336 2340 2344 2348 2352 2356 2360 2364 2368 2372 2376
2380 2384 2388 2392 2396 2400
如果你仔细想想,你真的很幸运。你在29
上测试这种控制的几率是多少,这不是今年2月的有效日......你现在能够修复它,而不是在用户发送报告。