\


 Wednesday, 13 September 2006
Windows Forms DataGridView - nevykreslování záhlaví sloupce
.Net Framework

V .Net konferenci na serveru builder se objevil dotaz, jak skrýt záhlaví (header) sloupce v DataGridView. Kolegové, zvyklí pravděpodobně stále na poněkud nehrabaný DataGrid z verze 1.x .Net Frameworku, radili vytvořit nový sloupec a nové záhlaví.

Nejjednodušší řešení ale představuje odchycení události CellPainting DatagridView a a v ní zamezíte vykreslení sloupce nastavením vlastnosti Handled na true. DataGridView má ale mnohem lepší objektový model než DataGrid a jednoduchých změn ve vykreslování DataGridView dosáhneme rychle v obsluze událostí CellPainting, RowPrePaint, RowPostPaint a dalších.

        const int hiddenRowIndex = -1; //záhlaví má index -1
        const int hiddenColumnIndex = 0; //skryjeme první sloupec

        private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
        {
            if (e.RowIndex == hiddenRowIndex && e.ColumnIndex == hiddenColumnIndex)
            {
                e.Handled = true;
            }
        }

Update : Samozřejmě nemusíte zcela rezignovat na vykreslení buňky a chcete vybarvit alespoň její pozadí.

Opět je to jednoduché - vyplníme pozadí a nastavíme e.Handled na true

e.Graphics.FillRectangle(myColor, e.CellBounds);

e.Handled = true;



Wednesday, 13 September 2006 17:17:52 (Central Europe Standard Time, UTC+01:00)       
Comments [0]  .NET Framework | Windows Forms