У меня есть следующий код, который появляется правильно, заполняет поле со списком
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» правильно заполняются и выбираются в выпадающем списке. Однако, когда я пытаюсь получить ValueMember в событии ComboBox_SelectedIndexChanged, я получаю «Указанное приведение неверно». ошибка. Я не могу восстановить его с помощью следующего кода.
DateTime StartTime = (DateTime) comboBox1.SelectedItem;
В отладчике я вижу atime из выпадающего списка. Выбранный элемент выглядит так, как будто он отформатирован как тип DateTime, но я не могу откинуть его обратно. Я неправильно подхожу к этой проблеме?
Решение : как указано ниже @Cj S, Combobox.SelectedItem возвращал тип Hour, где я думал, что он будет возвращать данные Hour.atime типа DateTime. Использование данного решения дало правильную информацию.