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;}
}
}