我已经看到了很多涉及数据绑定的解决方案,但我没有数据源。在这种情况下,组合单元格仅适用于1行(其他行不具有DataGridViewComboBoxCell)。如何捕获DataGridView验证在编辑单元格中写入值时出错?
我设置DataGridViewComboCell像这样:
DataGridViewComboBoxCell cell = new DataGridViewComboBoxCell();
cell.DisplayStyle = DataGridViewComboBoxDisplayStyle.ComboBox;
cell.Items.AddRange(items.ToArray()); // items is List<string>
我动态后重新填充它是这样的:
_cell.Items.Clear();
_cell.Items.AddRange(this.Data.ResponseOptions.Select(d => d.Description).ToArray());
//d.Description is of type string
但后来我得到这个讨厌的对话框,上面写着:
DataGridView中发生以下异常: System.ArgumentException:DataGridViewComboB oxCell值无效。 要替换此默认对话框,请处理DataError事件。
顺便说一句,它并没有多大帮助,说它不是“有效的”。向MS发送电子邮件称Windows Forms无效是否公平?
我试过抓住单元格的项目属性,并添加使用foreach()与Add()调用的字符串。我仍然得到对话。
我也试过每次我想更新它并重新创建一个新的DataGridViewComboCell时吹走整个单元格。我仍然得到对话。
我也尝试手动覆盖列值(成功时,我没有这个问题)。虽然没有解决它。
当我尝试重新填充组合单元中的项目时,我似乎只能看到此对话框。
现在我只是抹去了DataError方法。
有什么建议吗?
我以前见过这个错误。它发生在为单元格设置了* ValueType *并且您提供的数据类型不同的情况下。你检查过了吗? – ThunderGr
@ThunderGr:这也是我的想法,但正如你从上面看到的,我尝试在初始和更新中(以几种方式)将项目添加为完全相同的类型。 – micahhoover
如果我是你,我会让DataError打印一份关于添加的项目类型和值的消息框的报告。很多时候你认为你做的事与你实际做的不一样。特别是在C#中。我怀疑是空洞,说实话。 – ThunderGr