我有以下代码正确显示填充组合框
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数据。使用给出的解决方案给出了正确的信息。
答案 0 :(得分:3)
您无法将字符串强制转换为DateTime。改为使用DateTime.Parse。
答案 1 :(得分:1)
如果您的组合是DataBinded,那么您需要执行以下操作。
int intId = ((Priority)comboPriority.SelectedValue).Id;
Priority
是我的实体类
答案 2 :(得分:0)
糟糕...
我完全错了。您需要获取SelectedValue
而不是SelectedItem
,如下所示:
DateTime StartTime = (DateTime) comboBox1.SelectedValue;
<击>
我相信您选择的商品属于Hour
类型,并且您尝试将其投放为DateTime
我相信您的代码应该是某些符号
DateTime StartTime = (DateTime) comboBox1.SelectedItem.atime;
击> <击> 撞击>