【问题标题】:Can't set AllowUserToAddRows in DataGridView无法在 DataGridView 中设置 AllowUserToAddRows
【发布时间】:2016-02-01 09:20:41
【问题描述】:

我有一个带有 DataGridView 的 Winforms 应用程序。

网格的 DataSource 设置为 BindingSource。 BindingSource 的DataSource 是一个对象的集合,它实现了IBindingList 接口。 (实际上是一个基于示例的 SortableBindingList 类)。

如果我尝试在网格上设置属性 AllowUserToAddRows,我会收到一条错误消息“属性值无效”以及附加详细信息“从类型 'Bitmap' 到类型 'Integer' 的转换无效。”

网格中的某些列显示图像,它们是只读的。

此错误消息试图告诉我什么?

对属性 AllowUserToaddRows 的使用是否有一些限制?

如果它引用了网格中的特定列,或者代表行的类中的属性,我如何找出导致问题的列或属性?

【问题讨论】:

  • 网格中的某些列是基于DataGridViewImageColumn的自定义图像列,具有基于DataGridViewImageCell的自定义单元格。如果我丢弃这些列,那么我可以设置属性 AllowUserToAddRows。这是否意味着我在自定义列实现中做错了什么?

标签: winforms datagridview


【解决方案1】:

我知道了。

错误信息是DataGridViewImageCell自定义实现中函数GetFormattedValue()的异常。

在所有实际情况下,这个函数都是用一个枚举值调用的,它显示为一个图像。该函数将值转换为相关的枚举,然后选择多个图像之一。

如果设置 AllowUserToAddRows=true,则设计器调用函数 GetFormattedValue 并在 value 参数中传递图像。我的(糟糕的)代码会产生异常。

我现在已经为这种情况添加了一些处理,我可以将 AllowUserToAddRows 设置为 true。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-16
    • 2021-09-22
    相关资源
    最近更新 更多