Formatierung von Einträgen im DataGridView
Frank Dzaebel, erstellt am: 15.11.2005, zuletzt geändert: 3.2.2006
Kategorie: DataGridView, .NET-Version: 2.0, [NG-Posting]

Wenn die Format-Eigenschaft des DefaultCellStyle nicht mehr ausreicht, kann der FormatProvider (zusätzlich) benutzt werden, um die Darstellung innerhalb der DataGridView-Zellen benutzerdefiniert zu variieren. Die in .NET 2.0 neue DataGridViewCellStyle.FormatProvider-Eigenschaft ruft das Objekt für die Bereitstellung der kulturspezifischen Formatierung der DataGridView-Zellenwerte ab, oder legt dieses Objekt fest.

Sehr flexible Umwandlung ist auch mit dem DataGridView.CellFormatting-Ereignis möglich:
Für die Eingabe gibt es das Gegenstück: DataGridView.CellParsing-Ereignis.
[Anpassen der Datenformatierung im DataGridView-Steuerelement in Windows Forms]  

public partial class Form1 : Form
{
  public Form1() { InitializeComponent(); }
  public List<Person> personen = new List<Person>();

  private void Form1_Load(object sender, EventArgs e)
  {
    personen.Add(new Person("Frank", 42));
    personen.Add(new Person("Eva"  , 34));
    personen.Add(new Person("Luca" ,  2));
    dataGridView1.DataSource = personen;
    dataGridView1.Columns[0].DefaultCellStyle.Format = "d";
    dataGridView1.Columns[0].DefaultCellStyle.FormatProvider = new TestFormatProvider();
  }

  public class TestFormatProvider : IFormatProvider
  {
    public object GetFormat(Type formatType)
    {
      DateTimeFormatInfo dtfi = new DateTimeFormatInfo();
      dtfi.DateSeparator = "[Frank]"; return dtfi;
    }
  }
}

public class Person
{
  private string   name;
  private int      alter;
  private DateTime geburtstag;

  public Person(string name, int alter)
    : this(name, alter, DateTime.Now.AddYears(-alter))
  {
  }
  public Person(string name, int alter, DateTime geburtstag)
  {
    this.Name = name;
    this.Alter = alter;
    this.geburtstag = geburtstag;
  }

  public string Name
  {
    get{ return name ;}
    set{ name = value;}
  }

  public int Alter
  {
    get { return alter ;}
    set { alter = value;}
  }

  public DateTime Geburtstag
  {
    get{ return geburtstag ;}
    set{ geburtstag = value;}
  }
}