gpt4 book ai didi

C# Winforms DatagridviewCombobox异常字符串无法转换为类

转载 作者:太空狗 更新时间:2023-10-29 23:17:50 24 4
gpt4 key购买 nike

从嵌入在数据 GridView 中的数据 GridView 组合框(下拉菜单)控件中选择新值时,我遇到异常。组合框由 BindingSource 填充,其中填充了我的类的实例。我可以正确显示菜单中的选项并选择一个,但是将焦点更改到新控件(我猜是提交更改)会导致出现异常:从 System.String 到 myclass 的无效转换。堆栈跟踪(如果我正确使用该词)显示源是

System.Windows.Forms.DataGridView.PushFormattedValue级联到System.Convert.DefaultToType

下面是一个更明确的解释(抱歉这么长,但我想让它可以重现):

我有一个名为 Occupant 的空类,没有任何属性(当 Occupant 也有一个字符串 Name 属性时就会出现问题,所以不是那样)。我有一个名为 OccupantSource 的 BindingSource,其 DataSource 指向 Occupant。

我还有一个名为 Car 的类,其中有一个名为 Driver 的 Occupant 属性。

在我的 Form_Load() 中,我调用了两次 OccupantSource.AddNew(),并调用了一次 CarSource.AddNew()。

我有一个DataGridView控件,它的DataSource是CarSource(由Cars组成的BindingSource)。 DGV 有一列,显示 CarSource 中汽车的 Driver 属性。它是一个 DataGridViewComboBoxColumn,DataPropertyName 设置为 driver。

所以我想要的是在 Datagridview 中显示多行汽车,其中一列是一个组合框,我可以下拉并从现有的 Occupant 实例中选择一个司机。但我得到了异常(exception)。

这是我误会了吗?不能使用类的实例来填充 DataGridViewComboBox 吗?

最佳答案

我遇到了完全相同的问题并且摸不着头脑,用我的 google-fu 几个小时试图解决它。这个链接帮助我终于给了我一个很好的解释。 http://www.pcreview.co.uk/forums/datagridview-combobox-column-error-listing-objects-t2344961.html

我修复它的方法是更改​​ DisplayMember。我在返回“this”的类上引用了“Self”——我将它用于 DisplayMember 和 ValueMember,认为它只是 ToString() 来自 DisplayMember 的属性。

阅读您的解释,您可能根本没有设置 DisplayMember 和 ValueMember?如果是这种情况,请尝试正确设置它们(并且不要为显示成员使用对“this”的引用!)它可能会修复它。

关于C# Winforms DatagridviewCombobox异常字符串无法转换为类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7279987/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com