Создание специального элемента управления который сам себя рисует

поскольку эта функция будет активироваться

Для начала вам нужно написать код, который будет заниматься графическим отображением столбиков для каждой строки. Поскольку эта функция будет активироваться многократно, для каждой из строк, и ее можно отделить от остального кода, который будет отвечать за привязку к коллекциям данных, предоставляющим эти строки, имеет смысл вынести функции отображения в самостоятельный элемент управления. Это будет специальный элемент управления, производный от базового класса Control, поскольку он отвечает за все рисование, производимое в его области клиента, с именем BarChartControl. Так как он не будет использоваться вне инкапсулирующего элемента управления , Который будет отображать экземпляры BarChartControl, Вы сделаете его класс внутренним в сборке CustomControis И не будете экспонировать его в окне Toolbox, откуда другие программисты могли бы помещать его непосредственно в свои формы. Код реализации BarChartControl Относится по большей части к рутинным геометрическим и графическим функциям отображения, в детали которых я здесь вдаваться не буду. Все детали вы можете увидеть, загрузив код образца CustomControis. Основной скелет класса BarChartControl Показан в Класс объявляется как внутренний, с установленным в False Атрибутом Toolboxltem, Что предотвращает его добавление в Toolbox, а то, что он помечен как Internal, Предотвращает его использование вне объявляющей сборки. Класс BarChartControl Является производным одновременно от базового класса Control И интерфейса IDisposable. Реализация интерфейса IDisposable необходима, поскольку в классе имеется элемент-переменная, содержащая объект Font, Который сам является уничтожаемым объектом. Чтобы обеспечить должную очистку объекта Font, Когда ваш элемент BarChartControl Будет больше не нужен его пользователям, вы должны освобождать этот объект при освобождении вашего элемента управления, за что и отвечают интерфейс IDisposable И методы завершения.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *