我有一个dataGridView,其dataSource是一个dataTable。
我的问题是我希望某些列以十六进制显示。使用类似的东西,我可以做到这一点:
foreach (DataGridViewColumn c in grid.Columns)
{
if (DISPLAYED_IN_HEX.Contains(c.Name))
{
c.DefaultCellStyle.Format = "X";
}
}
我的问题是我希望这个十六进制值以0x为前缀,以免混淆任何人以十六进制形式。 dataTable中的值是各种整数类型。我研究了创建一个自定义的IFormatProvider,但我认为我的编码技能尚未达到标准。还有其他可能的解决方案吗?
答案 0 :(得分:3)
是的,CellFormatting事件会很好。这是一个例子,它试图将第一列中的十进制数转换为十六进制:
private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) {
if (e.ColumnIndex == 0 && e.Value != null) {
long value = 0;
if (long.TryParse(e.Value.ToString(), out value)) {
e.Value = "0x" + value.ToString("X");
e.FormattingApplied = true;
}
}
}
答案 1 :(得分:1)
可能不是最有效的方法,但也许您可以处理CellFormatting
事件,然后逐个单元地更改格式。