среда, 16 марта 2011 г.

Пару слов об OnPaint в .NET

При рисовании нестандартных элементов управления или изображений обычно используют один из двух подходов: перекрывают метод OnPaint или перехватывают событие Paint.

protected override void OnPaint(PaintEventArgs e)
{
    // тут что-то происходит....
}

или

private void Form_Paint(object sender, PaintEventArgs e)
{
    // тут что-то происходит....
}

Недавно столкнулся с проблемой, что перекрытый метод OnPaint не вызывается, а обработка события Paint не происходит. Поиск в яндексе дал пару похожих проблем, которые несколько лет остаются без решения либо решены окольными путями.