Для тих, хто постійно використовує Visual Studio, панель Properties (Властивості), є одним з основних інструментів для редагування властивостей елементів, в першу чергу це стосується графічних примітивів в Windows Forms і WPF. Безсумнівно, такий елемент може бути корисний і у власному проекті. Далі мова піде про те, як використовувати PropertyGrid в додатку.
В рамках даної статті ми створимо додаток, в при побудові якого навчимося працювати з елементом PropertyGrid (сітка властивостей).
Код проекту можна завантажити тут.
Типове вікно сітки властивостей виглядає так:

Даний елемент призначений для редагування і відображення властивостей різних об'єктів в зручному вигляді.
Властивості елемента можуть бути згруповані за певною ознакою, або збудовані за алфавітом. Кожна властивість має ім'я (лівий стовпець), значення (правий стовпець) і опис (знаходиться внизу вікна). Властивість може бути змінним або незмінним.
У нашому проекті ми продемонструємо роботу з наступними типами властивостей:
Роботу з динамічно змінюються масивами, які, теж, безсумнівно, можна використовувати в якості значення властивостей, ми розглянемо в наступній статті, присвяченій даній темі.
Для того, щоб в проекті використовувати сітку властивостей необхідно:
- Створити в батьківському елементі (наприклад формі) об'єкт класу PropertyGrid.
- Створити клас, що описує певний набір властивостей. Кожне таке властивість конфигурируется за допомогою атрибутів.
- Створити об'єкт класу властивостей і привласнити його полях необхідні значення.
- Привласнити властивості SelectedObject об'єкта класу PropertyGrid об'єкт з описом властивостей (створений в пункті 3).
Створення каркаса додатки
Створимо новий додаток Windows Forms з ім'ям "PropertyGridExample" і додамо на головну форму два елементи "ComboBox" і "PropertyGrid".
Якщо в списку Toolbox немає елемента PropertyGrid, то його слід додати. Для цього натисніть правою кнопкою миші на панелі Toolbox для переміщення та вибору "Choose Items ...".

На вкладці ".NET Framework Components" знайдіть у списку рядок з ім'ям "PropertyGrid" і відзначте її галочкою.

Тепер на панелі "Toolbox" у вас повинен з'явитися елемент "PropertyGrid".

Задамо наступні властивості батьківської формі:
Має вийти приблизно наступне.

Створимо порожню папку з ім'ям "PropertyClasses" в нашому додатку, для цього потрібно натиснути правою кнопкою миші на імені проекту в дереві рішення вікна "Solution Explorer" і вибрати "Add-> New Folder".
У створену папку додамо файли C # класів з наступними іменами:
- PropertyTextField
- PropertyTrueFalse
- PropertyCategories
- PropertyList
- PropertyColorSelector
- PropertyFontConfig
Після цього вікно рішення повинно виглядати приблизно так:

Додамо обробники подій для наступних елементів:
Вихідний код головної форми проекту наведено нижче.
При завантаженні форми в методі "Form1_Load" здійснюється ініціалізація об'єктів, які є демонстрацією використання тих чи інших типів властивостей. Метод "cbKindOfProps_SelectedIndexChanged" викликається при виборі даного нас приклад зі списку. Для управління сіткою властивостей використовується об'єкт "prgProperty".
Створення класів, що описують різні типи властивостей
Для управління видом властивості у вікні "PropertyGrid" використовуються атрибути, наведені в таблиці нижче.
Відображення властивості. Відображати (true) або не відображати (false) дана властивість у вікні "PropertyGrid".
Редаговані властивості. Властивість з можливістю редагування (true) або тільки для читання (false)
Опис властивості. Буде відображено в нижній частині вікна PropertyGrid.
Завдання виду властивості у вікні PropertyGrid.
Далі будуть представлені класи, що реалізують роботу тих чи інших типів властивостей.
Тип властивості - текстове поле.
Тип властивості - логічна змінна.
Тип властивості - список.
Для того, щоб даний список працював додамо перерахування "Direction", елементи якого і будуть міститися в випадаючому списку.
Також визначимо клас "DirConverter" для перетворення елементів перерахування "Direction" в строкове представлення. Тип цього класу вказується як параметр атрибута "TypeConverter" класу перечислительного властивості.
Тип властивості - колір.
Тип властивості - шрифт.
додаток PropertyGridExample
Запущене застосування "PropertyGridExample" виглядає так.

У випадаючому списку нам пропонуються приклади, що демонструють роботу різних типів властивостей. На малюнку вище показано текстове властивість. Далі за списком - логічне властивість.

Демонстрація поділу властивостей на групи.



Вибір елемента із заданого списку.

Робота з PropertyGrid досить проста, досить розібратися з основними моментами, які необхідно враховувати при його використанні. На цьому все, спасибі за увагу!
Навігація по публікаціям