向表中添加新项时InvalidCastException

本文关键字:新项时 InvalidCastException 添加 | 更新日期: 2023-09-27 17:54:53

我正在尝试添加一个新项目到表中,但是下面的代码正在抛出InvalidCastException。

这是从add item页面添加到我的表中的新项。WineDate来自一个日期选择器,WineStars来自一个列表选择器,Category来自一个链接到表的列表选择器

WineItem newWineItem = new WineItem
            {
                WineDate = wineDatepurchasedTextbox.Value.Value.Date,
                WineComments = wineCommentsTextBox.Text,
                WineStars = (string)StarList.SelectedItem,
                WineType = wineTypeTextbox.Text,
                WineVinyard = wineVineyardTextbox.Text,
                WineYear = wineYearTextbox.Text,
                Category = (WineCategory)winecategoriesListPicker.SelectedItem
            };

如果您需要任何进一步的信息来帮助我,请告诉我。

向表中添加新项时InvalidCastException

您只执行两次强制转换:您将StarList.SelectedItem强制转换为string,并且您将winecategoriesListPicker.SelectedItem强制转换为WineCategory。您应该附加调试器并查看这些值实际上是什么,以确定您做错了什么。

(这假设WineItem中的属性设置器都不执行强制转换,但我将首先使用明显的解决方案。)

Category = (WineCategory)winecategoriesListPicker.SelectedItem

如果winecategoriesListPicker.SelectedItem是一个继承WineCategory的类,你可以这样做,否则你必须声明这样一个类或创建一个接受winecategoriesListPicker.SelectedItem类型的构造函数:

Category = new WineCategory(winecategoriesListPicker.SelectedItem);