我正在寻找一种格式化DataGridViewTextBoxColumn的方法,以便在数据绑定(bind)期间格式化要数据绑定(bind)的值。例如,我有一个CompanyName属性,发生数据绑定(bind)时,我需要从CompanyName中提取前5个字母。

我可以挂接不同的DataGridView事件(例如,Row Attached事件)并遍历所有行并完成窍门,但我想找到更复杂的方法来做到这一点。由于我决定使用数据绑定(bind),因此遍历数据并对其进行修改有点违反数据绑定(bind)的概念。

我要做的是如何与以下操作相同,但是添加自定义格式逻辑:

dataGridView1.Columns[colSomeDate.Index].DataPropertyName = "SomeDate";
colSomeDate.DefaultCellStyle.Format = "yyyy";

我认为我应该实现IFormatProvider,但是我不太了解如何实现它。
dataGridView1.Columns[companyName.Index].DataPropertyName = "CompanyName";
companyName.DefaultCellStyle.FormatProvider = new ShortText(); // ShortText should implement IFormatProvider

最佳答案

我不知道IFormatProvider,但是DataGridViews CellFormatting事件可以帮助您吗?

private void dataGridView1_CellFormatting(object sender,
    DataGridViewCellFormattingEventArgs e)
{
    if (e.ColumnIndex == 0)
    {
        e.Value = e.Value.ToString().Substring(0, 5); // apply formating here
        e.FormattingApplied = true;
    }
}

http://msdn.microsoft.com/en-us/library/z1cc356h.aspx?ppud=4

09-27 00:00
查看更多