如何从提供的年份填充“月”组合框和“年”组合框,并将它们的值默认为上个月?

B. *_*non 0 .net c# combobox date winforms

我需要让用户选择一个月和一年。通常,他们会想要最后一个月(例如,如果是 2015 年 12 月 18 日,他们通常会选择 2015 年 11 月)。所以我希望这些值是组合框中预先选择的值。

我怎样才能做到这一点(在 C# 中),并且一旦越过卢比孔河(幼发拉底河?)到 2016 年 1 月,它也将是“2015 年 12 月”?

我也希望它不会增加2016,直到它2016(依此类推,随着岁月的流逝),并开始从预定一年(不0年或1970年或类似的东西,不一定)。

Rez*_*aei 5

您可以使用DateTimeFormatInfo.MonthNames来查找文化的月份名称。有些文化有 13 个月,因此DateTimeFormat.MonthNames返回一个13 个月的数组。

但是由于您似乎想使用公历,所以您只需要使用 12 个月的名称,而我曾经使用InvariantCulture过月份名称。

您可以使用这样的代码:

monthComboBox.DataSource = CultureInfo.InvariantCulture.DateTimeFormat
                                                     .MonthNames.Take(12).ToList();
monthComboBox.SelectedItem = CultureInfo.InvariantCulture.DateTimeFormat
                                        .MonthNames[DateTime.Now.AddMonths(-1).Month - 1];

yearComboBox.DataSource = Enumerable.Range(1983, DateTime.Now.Year - 1983 + 1).ToList();
yearComboBox.SelectedItem = DateTime.Now.Year;
Run Code Online (Sandbox Code Playgroud)

您可以使用CurrentCulture或其他一些您喜欢的文化。