所以,也许这是一个糟糕的设计;我不知道,但是假设我有一个DataTable
,它的一列包含int
的值;这些值实际上是用来表示项目中的enum
类型。
我想做的是将一个DataGridView
绑定到该表,并让该列显示enum
的名称,而不是整数值“0”或“1”或其他值。
我考虑的一个选择是进行整个标准化:在DataSet
中添加一个表,表中包含enum
名称,以enum
值为键,并让我的第一个表包含对 this 表的引用。
但这是一个特定于enum
的想法。我想知道,一般来说,我是否可以为一个给定的类型编写自己的IFormatProvider
和ICustomFormatter
实现 *,并使用该格式化程序来控制值如何在DataGridView
控件的给定列中显示(或实际上在 * 任何 * 控件中,就这一点而言)。
- 如果我所要求的是可能的话,这只是我所怀疑的方式。我并不是真的死定要使用这些接口。
1条答案
按热度按时间vkc1a9a21#
您确实可以实现一个自定义的
ICustomFormatter
,但是由于DataGridView
部分的一些缺陷,您需要实际告诉它如何应用格式化程序。首先将
column.DefaultCellStyle.FormatProvider
设置为自定义格式设置类的示例。然后,处理CellFormatting
事件:格式化程序类看起来如下所示: