Опубликован: 13.07.2010 | Уровень: специалист | Доступ: платный
Самостоятельная работа 24:

Пользовательские компоненты

Пробное тестирование компонента

Теперь нужно посмотреть, что у нас на данном этапе получилось. Для этого нужно откомпилировать компонент до уровня DLL и поместить его на пробную форму.

  • Добавьте к решению MySolution новый проект ComponentTest типа приложения, выполнив команду меню File/Add/New Project и настроив мастер согласно рисунка

  • В панели Solution Explorer щелкните правой кнопкой мыши на узле проекта ComponentTest и выполните команду Set as StartUp Project, чтобы сделать новое приложение стартовым

Обратите внимание, что после этой команды оболочка выделила узел проекта полужирным стилем (если он уже не был выделен). В решении только один проект может быть стартовым.

  • Перейдите в режим конструктора форм для формы Form1 файла Form1.cs и откройте панель компонентов Toolbox

Мы видим, что пока панель содержит 9 свитков


Теперь нужно откомпилировать проект MyComponents. Для этого в панели Solution Explorer щелкните правой кнопкой мыши на корневом узле проекта и выполните команду Build


  • Перейдите в режим конструктора форм для формы Form1 файла Form1.cs и откройте панель компонентов Toolbox

Теперь мы видим, что после компиляции в панели Toolbox оболочки появился новый свиток с именем проекта компонента, в котором находится создаваемый компонент FirstComponent. То есть, оболочка сразу стала реагировать на появление нового компонента


  • Поместите компонент FirstComponent на форму Form1, выделите его экземпляр и исследуйте свойства в панели Properties оболочки

Мы видим, что в исполняемом файле программы оболочка автоматически создала экземпляр компонента с дежурным именем firstComponent1. Наряду со свойствами, наследуемыми компонентом от класса Control, в панели свойств отображаются все наши публичные свойства экземпляра компонента, такие, как IntegerProp, StringProp, CharProp, BoolProp, EnumProp. Они обертывают объекты простых значимых типов и оболочка поддерживает их декларативное изменение на этапе проектирования, в том числе, через раскрывающиеся списки. Но сложное свойство SomeObj, которое обертывает объект ссылочного типа, представлено в панели Properties только типом MyCompany.MyComponents. SomeObject.

Это связано с тем, что панель Properties способна представлять и редактировать свойства только как строки. Свойства простых значимых типов она может самостоятельно преобразовывать в строку и обратно, обеспечивая тем самым возможность их редактирования на этапе проектирования. Но со сложными типами, к которым относится класс SomeObject, дело обстоит иначе и на данном этапе оболочка в поле значения свойства-ссылки отображает только полное имя типа объекта.

Александр Очеретяный
Александр Очеретяный
Украина, Киев
Анастасия Балыбердина
Анастасия Балыбердина
Украина, Киев, НТУУ КПИ