我正在尝试创建一个可手动编辑的DataGridView,而不是绑定到任何DataSource,其中DataGridView本身和大多数单元格类型都是子类(自定义单元格类型作为模板提供给网格子类中的列),以便某些事件可以针对不同的细胞类型进行不同的处理
其中一个自定义单元格类型基于ComboBoxCell,其中的项目是从枚举中手动添加的。目前,这是应用程序中唯一不能正常工作的部分,所以我假设我的大部分子类化语法都没问题(我是C#的新手)。
每当我运行应用程序并尝试将下拉列表更改为空白默认值以外的任何内容时,都会出现一个消息框,其中包含以下行:
System.ArgumentException:DataGridViewComboBoxCell值无效。
据我所知,这是因为单元格的Value被设置为字符串而不是对象。我已经尝试通过在OnEndEdit事件中将Value设置为字符串的值来修复此问题,这导致错误窗口仅出现一次,并且只有在窗口被解除后才能正确选择下拉列表。
我也尝试重写抛出DataError的事件并设法导致错误窗口不出现,但这种方式被认为是一种黑客攻击并且不会被接受作为解决方案 - 我需要停止出现的任何错误完全。
关于我应该覆盖哪些其他事件或者如何阻止此错误的任何建议?
答案 0 :(得分:0)
在DataGridViewComboBoxColumn
课程中,有一个ValueType
property,可让您定义在Items
集合中添加的数据类型。
你可以这样使用它:
myComboBoxColumn.ValueType = typeof(myEnum);