-
При создании нового визуального компонента в Microsoft Visual Studio система создает 2 файла: файл MyComponent.cs и файл MyComponent.Designer.cs.
В обоих объявляется partial class MyComponent.
Насколько я понял это есть некий способ разбить реализацию одного класса по двум файлам.
Я правильно понял?
Зачем это вообще нужно? Ведь C# (как описано в книжках) позволяет просто объявить класс-потомок компонента в одном файле и не париться. Зачем нужны два файла? Просветите ради бога... Я уже написал свой компонент Barcode (точнее перевел чужой с Object Pascal) и он полностью работает. И вот только сейчас обнаружил, что у меня здесь имеется два файла...
Это обязательно должно быть так? И в чем тут фишка?
-
файл с собственно кодом (логикой) не засоряется объявлениями дочерних контролов и кодом их создания
-
если проводить аналогию с дельфи, то MyComponent.Designer - это кодовый эквивалент dfm, а .resx - .rc или .res
-
2 clickmaker © (24.10.07 17:47) [2] Спасибо. Да, я кажется понял.
Действительно, Forms1.Designer.cs содержит инициализацию дочерних контролов, с их координатами и прочими подробностями. Просто так как я в основном сижу под ASP.NET я совсем забыл про этот момент в разработке форм под Windows. А в моем компоненте, как я понял, эту двойственность файлов можно ликвидировать, так как он не содержит дочерних контролов. Это - сам по себе отдельный контрол.
Сейчас бьюсь над странной вещью. Насколько легко и непринужденно созданный мной в Windows Application Project компонент попал в палитру на ToolBox!
Ничего подобного мне пока не удается добиться от Web Control-а, который я создал в ASP.NET Web Site. То есть компонент уже существует, руками на форму его тэг вписывается, в дизайнере он отображается, префикс для пространства имен я на форме объявил с помощью директивы Register, однако на палитре в ToolBox не могу его найти нигде. Там так много компонентов...Может я его просто не вижу? Хотя вряд ли... Мрак.
Как-то чудом месяц назад мне удалось этого добиться, когда я создавал Web Control Library, а затем как-то криво в том же каталоге Web Site. Да и то это работало непонятно как, а сейчас ничего не выходит с отдельным компонентом. Может быть кто-нибудь знает секрет?
-
> clickmaker © (24.10.07 17:47) [2] > если проводить аналогию с дельфи, то MyComponent.Designer > - это кодовый эквивалент dfm, а .resx - .rc или .res
до разделения на 2 части логически одного модуля уже дошли. Глядишь к 4ой версии вернутся заголовочные файлы. А то пока найдешь нужную функцию... Гмы-гмы...
-
Похоже, что нужно оттранслировать Web Control до стадии dll, чтобы он появился в ToolBox. Любопытно, что для обычного контрола в Windows Application этого не требуется.
Собственно, что я хочу?
У меня неважная память и я теряюсь, видя слишком много возможностей выбора, когда вызываю Add Item...
Поэтому я хочу для себя выработать простую схему, точнее две простые схемы (одну для проектирования Windows-приложений и вторую - для ASP.NET-приложений), устроенные примерно так:
1. Создаю приложение (Windows Application или ASP.NET). В нем я собираюсь тестировать и применять свои компоненты. 2. Создаю компоненты. Не в виде отдельной сборки, так как я не собираюсь становиться разработчиком компонентов, мне всего лишь они нужны для лучшей структуризации моих приложений. 3. Хочу видеть их в ToolBox, чтобы их проще было использовать при дизайне форм или web-страниц.
С Windows-приложением мне удалось легко выйти на этот путь. 1-2-3. А вот с ASP.NET пока не очень. Конечно, я могу приноровиться и не пользоваться ToolBox вообще. Но мне будет обидно, если я просто что-то упустил, а это было возможно. Какую-то директиву или атрибут, позволяющий компоненту просто оказаться в списке ToolBox.
Неужели инспектор объектов, визуальный дизайнер и редактор текста утроены проще, нежели этот простой список имен, называемый ToolBox? Почему они мой компонент видят сразу, а этот идиот в упор его не воспринимает и требует dll для того чтобы компонент мог туда встать хотя бы в рамках текущего ASP.NET проекта?
Может быть под борландовской средой мне было бы проще? Я пока лишь пробовал Microsoft Visual Studio и задаю здесь свои вопросы тем, кто, возможно, умеет работать в обеих средах.
-
> Похоже, что нужно оттранслировать Web Control до стадии > dll, чтобы он появился в ToolBox
разумеется. Как и в обычном приложении. Разница только в том, что веб - это dll + ascx, а обычное - только exe или dll
-
> kaif © (25.10.07 01:52) [5]
Специально не занимался этим вопросом, но есть предположение. Может, дело в том, что в W32-приложении все инкапсулируется внутри сборки (exe/dll). Как следствие, в тулбокс помещается все, что создается как UserControl. В противовес вебу, для которого контрол должен быть логически завершенной частью.
Хотя, может и чушь это...
|