我可以使用DataGridViewComboBoxColumn来显示类对象的列表吗?

本文关键字:对象 列表 显示 可以使 DataGridViewComboBoxColumn 我可以 | 更新日期: 2023-09-27 18:11:15

我试图用类对象列表填充DataGridViewComboBoxColumn(与ToString过载)。这种方法对我来说非常适合常规的组合框。然而,一旦我加载DataGridViewComboBoxColumndataGridView,它抛出一个错误,每次我点击远离数据网格。

错误在这里

The Following Exception Occurred in the DataGridView:
System.ArgumentException: DataGridViewComboBoxCell value is not valid.
To replace this default dialog please handle the DataError event.

这是在错误对话框之前执行的代码:

DataTable dt = new DataTable();
List<mclass> MObjects = new List<mclass>();
DataGridViewComboBoxColumn objcolumn = new DataGridViewComboBoxColumn();
objcolumn.DataSource = MObjects;
objcolumn.ValueType = typeof(mclass);
dataGridView1.DataSource = dt;
dataGridView1.Columns.Add(objcolumn);

现在在错误消息之间,列工作正常。我可以完美地从列表中选择对象。我如何让这个错误消失,并离开我的工作组合列在和平?我错过什么了吗?或者我是否需要找到一种方法来删除该错误消息?

经过一番研究,我试着添加这一行:

dt.Columns.Add("OBJList", typeof(mclass));

然而,这会产生相同的异常,更长的(我省略了大部分,可根据要求提供):

The following exception occurred in the DataGridView:
System.FormatException: Invalid cast from 'System.String' to 'Namespace.mobject'. --->      
    System.InvalidCastException: Invalid cast from 'System.String' to 'Namespace.mobject'.

我可以使用DataGridViewComboBoxColumn来显示类对象的列表吗?

我相信你的ValueType一定是stringtypeof部分应该是提取值的方法,可能在ToString()中。