2

dataSource が dataTable である dataGridView があります。

私の問題は、特定の列を 16 進数で表示することです。次のようなものを使用して、そこまで到達できます。

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

            }
        }

私の問題は、この 16 進値の前に 0x を追加して、16 進形式であることを混同しないようにすることです。dataTable の値は、さまざまな整数型です。カスタム IFormatProvider の作成を検討しましたが、私のコーディング スキルはまだその水準に達していないと思います。他に考えられる解決策はありますか?

4

2 に答える 2

3

はい、CellFormatting イベントは問題なく動作します。これは例です。最初の列の10進数を16進数に変換しようとします:

    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 に答える