Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > Наследование и дизайнер


Автор: MaxWave 12.1.2007, 00:29
Проблема такая:
Есть проект, хочу свой контрол в него добавить (не создавать отдельный проект)
Я хочу унаследоваться от класса Panel и сделать класс, к примеру MyPanel.  Где это в VS2005??? Как потом это добавить в Дизайнер? В ToolBox?

Я смотрел тут на форуме, но увидел только отдельные проекты.

И еще вопрос -  насчет разделения кода.
У меня на форме будет куча контролов, вкладки, на них много контролов. Можно ли как то все это структуризовать? Т.е. я хочу, что бы каждая вкладка была отдельным классом, который бы и обрабатывал все свое содержимое. Вообщем если есть контейнер - то его в отдельный самостоятельный класс. И как это сделать автоматически и что бы FormDesigner создавал код именно в отдельных классах, а не пихал все в Form1.h?

Автор: awers 12.1.2007, 02:26
1) где сдрасти.
2) где ты там увидел Form1.h
3) в чем проблема в создании экземпляра класса?
Код

System.Windows.Forms.Form fm = new Form(); 

и так же со всем остальным... 
4) структуризируй исходя из конкретной задачи, в чем трабл тоже непонятно ... 
5) 
Цитата(MaxWave @  12.1.2007,  00:29 Найти цитируемый пост)
создавал код именно в отдельных классах, а не пихал все в Form1.h?
 Project -> Add Item ...

Автор: Naum 12.1.2007, 10:08
Цитата(awers @  12.1.2007,  03:26 Найти цитируемый пост)
где ты там увидел Form1.h

Скорее всего это C++-ный проект.  smile 

Автор: awers 12.1.2007, 11:23
прошу прощения ... для меня VS2005 это C#

Автор: MaxWave 12.1.2007, 17:27
Извиняюсь, не поздаровался...

Вы не так поняли. Вообще есть на форме TabPanel к примеру (да вообще, любй контейнер).
Если я буду помещать все элементы в TabPanel, то весь код будет создаваться в этом пресловутом From1.h. Со временем этот файл раздуется до неимверных размеров - мне это не нужно. 
Мне нужно все это структурировать, т.е. есди я добавляю контрол на определеную вкладку, то формдизайнер вообще не трогает Form1.h а создает код в файле, к примеру TabPage1.h  т-е добавляет код в класс наследник от TabPage.  Такое возможно? Есди да, то как именно? 

Цитата

5) Цитата(MaxWave @  12.1.2007,  00:29 )
создавал код именно в отдельных классах, а не пихал все в Form1.h?

 Project -> Add Item ...


Там можно добавить только UserControl, а класс наследник как? КАк мне этот элемент потом поместить на форму с помощью дизайнера?

Автор: ivashkanet 12.1.2007, 17:59
Цитата(MaxWave @  12.1.2007,  16:27 Найти цитируемый пост)
Если я буду помещать все элементы в TabPanel, то весь код будет создаваться в этом пресловутом From1.h. Со временем этот файл раздуется до неимверных размеров - мне это не нужно. Мне нужно все это структурировать, т.е. есди я добавляю контрол на определеную вкладку, то формдизайнер вообще не трогает Form1.h а создает код в файле, к примеру TabPage1.h  т-е добавляет код в класс наследник от TabPage.  Такое возможно? Есди да, то как именно? 

Невозможно smile Так уж работает дизайнер форм. Но нормальные люди туда даже не заглядвают. Создали форму, она работает и хорошо. Зачем код дизайнера менять
Файл называется Form1.Designer.cs
Цитата(MaxWave @  12.1.2007,  16:27 Найти цитируемый пост)
Там можно добавить только UserControl

Добавляешь UserControl, на него ложишь все нужные элементы, компилишь, этот контрол появляется на вкладке Контролов в дизайнере, ложишь его на форму. Все.
Заодно и предыдущий вопрос решиться  smile 

Автор: MaxWave 12.1.2007, 18:28
Цитата

элементы, компилишь, этот контрол появляется на вкладке Контролов в дизайнере, ложишь его на форму. 


Где он появляется?  В ToolBox? Нет там его...

Я делаю так:
1) Добавил новый UserControl c именем MyUser
2) В проекте появился MyUser.h c вложенным ресурсо MyUser.resx
3) Компилю MyUser.resx

ничего не меняется. Где должен появиться контрол MyUser???

Автор: ivashkanet 12.1.2007, 18:54
Цитата(MaxWave @  12.1.2007,  17:28 Найти цитируемый пост)
3) Компилю MyUser.resx

бррррр 
А как?
Почему бу не скомпилить проект с UserControl-ом MyUser?

Автор: reloni 12.1.2007, 19:20
Цитата(ivashkanet @  12.1.2007,  17:59 Найти цитируемый пост)
Файл называется Form1.Designer.cs

Я так и не понял, мы говорим о C# или о управляемом С++?smile
В общем случае, после добавления нового контрола, нужно нажать правой кнопкой по тулбоксу, выбрать там Chose items и добавить ссылку на сборку, в которой лежит контрол. Если все находится в одном проекте, то добавить ссылку на exe-шник. Контрол должен будет появиться в тулбоксе.

Автор: MaxWave 12.1.2007, 19:24
Ну я компилю весь проект, но ничего не меняется. У меня в проекте и форма и контрол.
Мне нужно на эту форму поместить контрол (выйди в чат плиз... IRC: koptevo.dal.net.ru канал Vingrad)

Добавлено @ 19:27 
Все, вроде разобрался, после выбора exe-шника smile))
Теперь прикомпиляции всего проекта контрол будет компилиться автоматически 9я его код буду менять)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)