【问题标题】:How do you stop DataGridView calling IDataErrorInfo.this[string columnName] get?如何停止 DataGridView 调用 IDataErrorInfo.this[string columnName] 获取?
【发布时间】:2009-07-08 11:45:46
【问题描述】:
我有一个实现 IDataErrorInfo 的数据对象,但是验证逻辑有点慢。不是那么慢,但足够慢,你不想调用它很多次。在我的应用程序中,这些对象的列表显示在 DataGridView 控件中。网格是只读的,并且只会包含有效的数据对象,但是 DataGridView 坚持为网格中的每个单元格调用 IDataErrorInfo.this[string columnName] ,这使得重新绘制非常缓慢。
我尝试将 ShowCellErrors 和 ShowRowErrors 设置为 false,但它仍在调用 IDataErrorInfo.this[string columnName]。有什么想法可以阻止它验证我知道有效的对象吗?
【问题讨论】:
标签:
c#
.net
winforms
datagridview
idataerrorinfo
【解决方案1】:
作为一种便宜的选择...也许您可以在对象上设置一个标志,该标志禁用验证并始终从 2 个IDataErrorInfo 方法返回""?
obj.ValidationEnabled = false; // etc
如果这是一个主要问题,您可以引入一个模拟实际类型但不实现IDataErrorInfo 的传递对象。通过手动编码外观,或创造性地使用System.ComponentModel(大概是ITypedList 或TypeDescriptionProvider;请注意,仅针对单一类型不值得——手动编写类会更容易)。