首页 > 解决方案 > 在 DataGridView 的列中隐藏值 00:00:00 TimeSpan

问题描述

我有DataGridView这个DataTable

var dTable = new DataTable();
dTable.Columns.Add("Date", typeof(DateTime));
dTable.Columns.Add("Time", typeof(TimeSpan));

可能会出现TimeSpan值为00:00:00的 a 。

如果值是类型,是否有可能不显示列中的00:00:00值?DateTimeMinValue

标签: c#winformsdatagridviewtimespan

解决方案


在 DataGridView 中使用 CellFormatting 事件,在不更改基础数据的情况下更改显示值(TimeSpan.Zero 为“00:00:00”值)

private void Grid_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    if (e.ColumnIndex < 0 || e.RowIndex < 0) return;
    var grid = (DataGridView)sender;

    if (grid.Columns[e.ColumnIndex].ValueType == typeof(TimeSpan) &&
        TimeSpan.Zero == (TimeSpan)grid[e.ColumnIndex, e.RowIndex].Value)
    {
        e.Value = " ";
        e.FormattingApplied = true;
    }
}

推荐阅读