在dataGridView中创建自定义格式字符串

时间:2010-04-26 18:03:29

标签: c# formatting tostring

我有一个dataGridView,其dataSource是一个dataTable。

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

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

            }
        }

我的问题是我希望这个十六进制值以0x为前缀,以免混淆任何人以十六进制形式。 dataTable中的值是各种整数类型。我研究了创建一个自定义的IFormatProvider,但我认为我的编码技能尚未达到标准。还有其他可能的解决方案吗?

2 个答案:

答案 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事件,然后逐个单元地更改格式。