Модификация поведения при рисовании ячейки

далее нам нужно обрабатывать рисование

Таким образом, мы позаботились об отображении для ячейки пустого содержимого, если ее значение то же, что и в предыдущей строке. Далее нам нужно обрабатывать рисование границ ячеек так, чтобы пустые ячейки для повторяющихся значений отображались в сетке как одна большая ячейка. Для этого нужно переопределить метод OnCellPainting Базового класса, как показано в листинге 8.2. Вот и все. Если вы скопируете этот код или запустите образец программы CustomControlsHost из загружаемого кода, то увидите специальную сетку в действии. Этот пример довольно несложен, но весьма далек от настоящей реализации. Он не обрабатывает корректно случаи, когда пользователь настраивает границы ячеек по умолчанию, и в базовом классе имеются еще свойства, установка которых может привести к нежелательным эффектам при запуске кода. В этом опасность создания класса непосредственно как производного от элемента управления Framework: любые модификации, вносимые в его поведение посредством доступа к защищенным элементам, предполагают, что вы в точности знаете, как сделанные изменения повлияют на поведение базового класса. В случае сложного элемента управления вроде DataGridView Вам придется слишком глубоко погружаться в его внутреннее устройство. Лучшим подходом будет инкапсуляция элемента управления и настройка его поведения через открытый API, что мы вскоре рассмотрим. Назовите элемент управления FilteredGrid. Тем самым к вашему проекту будет добавлен новый файл пользовательского элемента управления и отображено рабочее пространство конструктора для него, похожее на пространство конструктора формы. Увеличьте размер элемента управления, захватив его границу и растянув его вниз и вправо до размера примерно 600 на 350 пиксел. Взяв рис. 8.5 за образец, добавьте к пользовательскому элементу две метки, текстовое поле, две кнопки, комбинированное поле, источник привязки И элемент управления DataGridview, Перетащив их из окна Toolbox. Расположите их, как на рис. 8.5. Источник привязки будет показан в панели невизуальных компонентов в нижней части конструктора. Установите свойство Text Меток и кнопок в соответствии с рис. 8.5, а свойство Text Текстового поля оставьте пустым. Дайте имена текстовому полю, комбинированному полю, кнопке, источнику привязки и сетке, соответственно M_FilterTextBox, M_Fields — Combo, M_FilterButton, M_ClearButton, 6. Включите в свойство Anchor Сетки значения Top, Bottom, Left И Right, Чтобы она автоматически изменяла свой размер, заполняя нижнюю часть пользовательского элемента управления при любом его размере.

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

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