【发布时间】:2010-12-02 21:19:02
【问题描述】:
我有以下正确显示的代码填充了一个组合框
class Hour
{
public string shownHour {get;set;}
public DateTime atime {get;set;}
}
(...)
DateTime now = new DateTime();
now = DateTime.Now;
List<Hour> hours = new List<Hour>
{
new Hour{shownHour = "8:00 AM", atime = new DateTime(now.Year, now.Month, now.Day, 8,0,0)},
new Hour{shownHour = "8:30 AM", atime = new DateTime(now.Year, now.Month, now.Day, 8,30,0)}
};
comboBox1.DataSource = hours;
comboBox1.ValueMember = "atime";
comboBox1.DisplayMember = "shownHour";
我看到“8:00 AM”和“8:30 AM”在组合框中正确填充和选择。但是,当我尝试在 ComboBox_SelectedIndexChanged 事件中检索 ValueMember 时,我得到一个“指定的强制转换无效”。错误。我似乎无法使用以下代码将其取回。
DateTime StartTime = (DateTime) comboBox1.SelectedItem;
在调试器中,我从 combobox.SelectedItem 中看到了 atime,它似乎被格式化为 DateTime 类型,但我似乎无法将其转换回来。我是否错误地处理了这个问题?
解决方案:正如@Cj S 在下面指出的那样,Combobox.SelectedItem 正在返回 Hour 类型,我认为它会返回 DateTime 类型的 Hour.atime 数据。使用给出的解决方案给出了正确的信息。
【问题讨论】:
标签: c# winforms combobox casting