Wednesday, 13 September 2006
Windows Forms DataGridView - nevykreslování záhlaví sloupce
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)
.NET Framework | Windows Forms
Monday, 11 September 2006
Fórum o OOP, UML, návrhových vzorech, MDA, DSL ... - chtěli byste?
Nadpis vyjadřuje v kostce vše. Hraji si právě teď s překladem a nastavením YetAnotherForum a napadlo mě, že bych na doméně forum.renestein.net spustil fórum, kde bychom společně diskutovali o návrhu aplikací, systémovém designu, OOP, UML, Model Driven Architecture, DSL, zuřivě bychom se hádali nad best practices, vášnivě "flamovali" nad podporou OOP v různých programovacích jazycích :) nebo bychom si vyměňovali linky na zajímavé články. Pro každé větší téma by existovalo samostatné fórum.
Vím. že některá česká fóra se OOP a analýzou zabývají, ale kvůli svému neodvolatelně finálním stavu "mrtvé" fórum s občasnými "self" přechody, spuštěnými přijetím jedné OT zprávy s nabídkou domácích zásob viagry nějakého momentálně insolventního a celoživotně impotentního spammera, se v nich nic zajímavého neděje.
Takže - máte zájem? :)
Monday, 11 September 2006 14:55:02 (Central Europe Standard Time, UTC+01:00)
Návrhové vzory | Ostatní | UML
Programátorská hádanka - 11.9.2006
Máte jednoduchý (a dnes bych řekl dokonce až urážlivě triviální) kód. A cituji jednoduchou otázku Mistra kódování a alžbětinského Sira W. Shakespeara - Jak se vám líbí?
class MessageQueue
{
private static object messageLock = new object();
private List<Message> list;
public MessageQueue()
{
list = new List<Message>();
}
public void RemoveMessage(Message message)
{
lock (messageLock)
{
list.Remove(message);
}
}
}
Monday, 11 September 2006 13:31:35 (Central Europe Standard Time, UTC+01:00)
Programátorské hádanky