четверг, 28 апреля 2011 г.

Создание пустой базы данных по шаблону

Некоторое время назад (уже уж более полугода) я устроился на работу в отличную фирму в группу разработки мобильных решений на платформе MS Windows CE и библиотеки .NET Compact Framework (.NET CF) в среде Visual Studio 2008. Первое время я занимался поддержкой существующих приложений либо разрабатывал настольные приложения различного назначения.

Мобильные решения часто в составе имеют также базу данных SQL Server Compact (SQL Server CE) в виде единого файла *.sdf, который хранится либо во внутренней памяти мобильного устройства (и, соответственно, удаляется при горячей перезагрузке), либо на флеш-карте, если такая есть в устройстве (так как флеш-память энергонезависима, файл базы данных остается после любой перезагрузки). В связи с этим возникает задача создания пустой базы данных по шаблону, в которой приложение может складировать данные. Такая может быть заполнена по умолчанию какими-либо данными (например, можно хранить номер версии базы для поддержания ее в актульном состоянии). У меня была возможность сравнить два решения этой задачи, которыми я готов поделиться.

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

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

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

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

или

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

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