我在这里很新,所以我的问题可能很愚蠢,但是找不到与我的问题类似的东西。 我正在VS 2017中编写Winforms应用程序。 我正在尝试使用可变的年份和月份初始化DateTime。 我的代码如下:
int month = comboBox1.SelectedIndex;
month++;
label1.Text = month.ToString();
DateTime dt = new DateTime(year,month,1);
每次用户单击组合框并选择其他月份时,“月份”就会更改。 与今年相同,但不会崩溃, 然后我创建了一个标签,其中显示了“月份”包含的内容(始终显示1-12,具体取决于所单击的月份)。
我收到一个超出范围的异常,说它不是有效的DateTime。 (例如第13个月之类的东西,但情况并非如此,因为我通过标签对其进行了检查)
我可以观察到一个奇怪的行为: 当“ month”变量大于6时(我刚刚添加了另一个“ month ++”),它不会崩溃。尽管当我单击dezember时它确实崩溃了,因为那是13个月。但这应该是标准的。
答案 0 :(得分:1)
使用显示和价值成员
创建这样的自定义类:
class Int_String
{
//important to have get set part
public _int { get; set; }
public _string { get; set; }
}
现在,在创建表单时,像这样填充您的组合框:
List<Int_String> myList = new List<Int_String>();
myList.Add(new Int_String { _int = 1, _string = "January" };
myList.Add(new Int_String { _int = 2, _string = "February" };
myList.Add(new Int_String { _int = 3, _string = "March" };
myList.Add(new Int_String { _int = 4, _string = "April" };
myList.Add(new Int_String { _int = 5, _string = "May" };
myList.Add(new Int_String { _int = 6, _string = "Juny" };
myList.Add(new Int_String { _int = 7, _string = "July" };
myList.Add(new Int_String { _int = 8, _string = "August" };
myList.Add(new Int_String { _int = 9, _string = "September" };
myList.Add(new Int_String { _int = 10, _string = "October" };
myList.Add(new Int_String { _int = 11, _string = "November" };
myList.Add(new Int_String { _int = 12, _string = "December" };
myComboBox.DisplayMember = "_string";
myComboBox.ValueMember = "_int";
myComboBox.DataSource = myList;
现在,当您要创建DateTime
变量时,可以这样创建它:
DateTime date = new DateTime(year, Convert.ToInt32(myComboBox.SelectedValue), 1);
答案 1 :(得分:0)
以下是从月份名称中获取月份号的方法: 新的DateTime(1,month,1).ToString(“ MMMM”);
将它们放在一起
int monthIndex = comboBox1.SelectedIndex + 1; // Gets the Current Index
DateTime dt = new DateTime(year,month,1); // Defines a Date Off Of It
label1.Text = dt.ToString("MMMM"); // Gets Format of Month Name
dt = dt.AddMonths(1); // Adds a Month, This Might End Up in January of Next Year