Ein Grid selber zeichnen
Frank Dzaebel, erstellt am: 3.06.2007, zuletzt geändert: 3.06.2007
Kategorie:DataGridView, .NET-Version:2.0, [Download]

Will man einfach nur ein Grid mit einem Linien-Raster haben, diese Linien auch noch zur Laufzeit verschieben können und bequem in die Zellen etwas hineinmalen, so kann man dies durchaus einfach und höchst flexibel und erweiterbar mit dem DataGridView erledigen. Eigene UserControls oder schwierige OOP-Verfahren sind da gar nicht nötig. Erreichen tut man dies, indem man einfach Funktionalität über den Code herausnimmt und das CellPainting-Ereignis behandelt.



const int rowCount = 6; const int colCount = 4;
const string ownerDrawColumnName = "1";

private void resetToolStripMenuItem_Click(object sender, EventArgs e)
{
  DataGridView dgv = dataGridView1;
  dgv.VirtualMode = true; dgv.RowHeadersVisible = false;
  dgv.ColumnHeadersVisible = false; dgv.AllowUserToDeleteRows = false;
  dgv.AllowUserToAddRows = false;
  dgv.Columns.Clear(); dgv.Rows.Clear();
  for (int col = 0; col < colCount; col++) dgv.Columns.Add(col.ToString(), col.ToString());
  for (int row = 0; row < rowCount; row++) dgv.Rows.Add();
  dgv.ReadOnly = true;
  dgv.CellPainting += new DataGridViewCellPaintingEventHandler(dgv_CellPainting);
  dgv.BackgroundColor = SystemColors.Control;
  dgv.BorderStyle = BorderStyle.None;
}
Das CellPainting-Ereignis ist beliebig modifizierbar. Ein Beispiel dafür finden Sie im [Download].