Archív Listopad, 2010

WinForms a panel s double-bufferingem

Potřebujeme-li ve WinForms vícenásobně překreslovat panel, setkáme se s největší pravděpodobností s blikáním našeho kresleného obrazu. Je to způsobeno tím, že obraz se vykresluje postupně a navíc relativně pomalu. Abychom se tomu vyhnuli musíme použít double buffering.

Vydědíme si tedy z panelu novou třídu, která bude mít double buffering aktivovaný a budeme ji používat namísto původního panelu.

C#:
public class DoubleBufferedPanel : Panel
{
    public DoubleBufferedPanel()
    {
        this.DoubleBuffered = true;
        this.SetStyle(ControlStyles.DoubleBuffer |
          ControlStyles.UserPaint |
          ControlStyles.AllPaintingInWmPaint, true);
        this.UpdateStyles();
    }
}

WinForms a červené X vykreslené na panelu

Pokud jste se někdy pokoušeli kreslit ve WinForms na panel (konkrétně v obsluze události Paint panelu) a dostali jste místo svého výtvoru pouze červený rámeček s krásným červeným X, pak věřte, že váš kód vyprodukoval vyjímku dříve než stačil něco nakreslit. Pokud se zobrazila pouze polovina vašeho výtvarného díla, pak to může být tím, že váš kód vyprodukoval vyjímku až v polovině kreslení. Inu zajímavý způsob jak informovat o problému. Příště si vůj kód budu raději lépe hlídat sám.

Rozdíly mezi událostmi a delegáty

Nebudu psát o tom co jsou to delegáti a události v C#, ale shrnu jejich podobné a rozdílné rysy.

Kus zdrojového kódu bude výřečnější než já :)
Čti dále

Editace záznamů pomocí SQL Server Management Studia

O funkcích SQL Server Management Studia jsem zde psal už několikrát. Pokud dojde na editaci záznamů v tabulkách, tak místo sepisování UPDATE dotazu, sáhnu po možnosti 'Edit Top 200 Rows' v kontextové nabídce tabulky.
Pokud jde o editaci jednoho záznamu, nejspíše bude tento postup zdlouhavější, ovšem zpravidla u jednoho záznamu nezůstane. Problém přichází, když tabulka obsahuje více než 200 záznamů a ten, který chci editovat není mezi prvními dvěma sty. Čti dále

Návrat nahoru