【问题标题】:Which events are triggered by editing a DataGridViewComboBoxCell?编辑 DataGridViewComboBoxCell 会触发哪些事件?
【发布时间】:2015-08-13 23:05:33
【问题描述】:

我正在尝试制作一个可手动编辑的 DataGridView,它不绑定到任何 DataSource,其中 DataGridView 本身和大多数单元格类型都是子类(自定义单元格类型作为模板提供给网格子类中的列),以便对于不同的细胞类型,某些事件可以有不同的处理方式。
其中一种自定义单元格类型基于 ComboBoxCell,其中项目是从枚举中手动添加的。目前,这是应用程序中唯一不能正常工作的部分,所以我认为大部分子类化语法都还可以(我是 C# 新手)。
每当我运行应用程序并尝试将下拉列表更改为空白默认值以外的任何内容时,都会出现一个消息框,其中包含以下行:

System.ArgumentException:DataGridViewComboBoxCell 值无效。

据我了解,这是因为单元格的值设置为字符串而不是对象。我尝试通过在 OnEndEdit 事件中将 Value 设置为字符串的值来解决此问题,这导致错误窗口仅出现一次,并且只有在窗口被关闭后才能正确选择下拉列表。
我也尝试过覆盖引发 DataError 的事件并设法导致错误窗口不出现,但这种方式被认为是一种黑客行为,不会被接受为解决方案 - 我需要阻止出现的任何错误完全。
关于我应该覆盖哪些其他事件或如何阻止此错误的任何建议?

【问题讨论】:

    标签: c# winforms datagridview datagridviewcomboboxcell


    【解决方案1】:

    DataGridViewComboBoxColumn 类中,有一个ValueType property 允许您定义添加到Items 集合中的数据的类型。

    你可以这样使用它:

    myComboBoxColumn.ValueType = typeof(myEnum);
    

    【讨论】:

      猜你喜欢
      • 2012-12-13
      • 2015-02-08
      • 1970-01-01
      • 1970-01-01
      • 2012-03-26
      • 1970-01-01
      • 1970-01-01
      • 2011-04-25
      • 2017-02-12
      相关资源
      最近更新 更多