Дизайн тайм за WinForms

Тази тема още се пише...

       В т.нар. дизайн тайм има три типа обекти, които се манипулират и които изграждат потребителският интерфейс:
  • Основни контейнери - те имат дизайнер, който имплементира IRootDesigner. Такива са например Form и UserControl - техният базов дизайнер (DocumentDesigner) имплементира IRootDesigner.
  • Контроли - те имат визуална част, съответно размер и позиция спрямо родителя им. Йерархията на видимата част от потребителския интерфейс се изгражда от контроли (и може да се види с Document Outline изгледа).
           В дизайн тайм в основата е основен контейнер (Form, UserControl или някой друг с дизайнер, който имплементира IRootDesigner). В крайна сметка обаче всички потребителски контроли, дори и тези с IRootDesigner дизайнер стават част от т.нар top-level windows (какъвто е Form), за да бъдат показани на потребителя по време на изпълнение.
  • Компоненти - най-базовият елемент в системата на дизайн-тайм. Няма собствена визуална част (но може да си създаде такава при желание). Всичко, което може да се манипулира в дизайн-тайм е компонент (включително контролите и основните контейнери).
Сериализация
Property Grid
Smart Tags
Динамично добавени свойства
Дизайнерска повърхност

Сериализация

       Създаването и редактирането на потребителски интерфейс по време на т.нар. дизайн тайм създава и редактира два информационни потока: за изходен код и за ресурси. Изходният код създава йерархията от контроли, създава различни компоненти и дава стойности на някои от техните свойства (properties). В ресурсите се съхраняват изображения и езиково-зависими ресурси. И двата вида сериализация може да се управлява и променя според желанията на програмиста.

Property Grid

       На избран контрол или компонент може да се променят свойства чрез специален контрол, даващ в табличен вид свойствата и техните стойности.



Smart Tags

       Типичните действия или просто най-често използваната функционалност може да се извади в специален панел, съдържащн т.нар. Smart Tags:



Динамично добавени свойства

       Има случаи, когато искаме да добавим функционалност към съществуващите контроли / компоненти. Например ToolTip контролата добавя свойство ToolTip към всеки контрол.

Дизайнерска повърхност

       Основните контейнери предоставят повърхност, в която се извършват редакциите. Всеки контрол може с помощта на Behavior Service да добавя функционалност в тази повърхност.