如何让DataGridView以十六进制格式显示指定字段?
解决DataGridView中ulong字段以十六进制显示的问题
方法一:利用CellFormatting事件(推荐,无需修改实体类)
直接给DataGridView绑定CellFormatting事件,在渲染指定列时手动格式化数值为十六进制:
- 在窗体初始化代码中绑定事件:
this.dumpGrid.CellFormatting += DumpGrid_CellFormatting;
- 实现事件处理逻辑:
private void DumpGrid_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) { // 匹配目标列并处理数值格式化 if (dumpGrid.Columns[e.ColumnIndex].Name == "dataGridViewTextBoxColumn3" && e.Value != null) { // 转为带0x前缀的大写十六进制字符串 e.Value = $"0x{Convert.ToUInt64(e.Value):X}"; // 标记格式已处理,跳过默认格式化逻辑 e.FormattingApplied = true; } }
方法二:修改实体类,新增只读属性
若允许调整Summary类,可添加一个返回十六进制格式的只读属性,再绑定到DataGridView列:
- 更新
Summary类:
public class Summary { public int ProcessId { get; private set; } public string ProcessName { get; private set; } public ulong MainModuleBase { get; private set; } // 新增只读属性,返回十六进制格式的基地址 public string MainModuleBaseHex => $"0x{MainModuleBase:X}"; }
- 修改DataGridView列的绑定配置:
this.dataGridViewTextBoxColumn3.DataPropertyName = "MainModuleBaseHex";
两种方案按需选择:方法一适合实体类无法修改的场景,方法二更直观简洁。
内容的提问来源于stack exchange,提问作者UnSure
相关产品推荐
相关产品推荐

