2

我有一个 dataGridView,它的 dataSource 是一个 dataTable。

我的问题是我希望某些列以十六进制显示。使用这样的东西我可以做到这一点:

 foreach (DataGridViewColumn c in grid.Columns)
        {
            if (DISPLAYED_IN_HEX.Contains(c.Name))
            {
                c.DefaultCellStyle.Format = "X";

            }
        }

不过我的问题是我希望这个十六进制值以 0x 开头,以免让任何人混淆它们是十六进制形式。dataTable 中的值是各种整数类型。我考虑创建一个自定义 IFormatProvider,但我认为我的编码技能还没有达到那个标准。还有其他可能的解决方案吗?

4

2 回答 2

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;
            }
        }
    }
于 2010-04-26T19:03:32.137 回答
1

也许不是最有效的方法,但也许您可以处理该CellFormatting事件,然后逐个单元格地更改格式。

于 2010-04-26T18:11:03.640 回答