![]() |
Модераторы: gambit, Partizan |
![]() ![]() ![]() |
|
SmartBye |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 60 Регистрация: 15.5.2008 Репутация: нет Всего: нет |
Делаю программу, в которой решил, что каждая функция программы будет в отдельном табе. Т.е. программа сама по себе - один табконтрол, а функции в отдельных классах-табпейджах, которые я просто при загрузке программы добавляю туда.
Хотелось бы узнать, можно ли как-то визуально спроектировать этот таб пейдж? Как будто я работаю с формой. Т.е. передо мной табпейдж, я кидаю в него кнопки, боксы и т.д., расставляю их мышкой и пишу код. Просто не хочется писать всю эту дребедень вручную( Попробовал сделать так: добавил в проект новый компонент, унаследовал его от таб пейджа, кинул на него кнопку для теста. Затем добавил на главной форме этот класс-компонент в таб контрол, но он оказался девственно чист =/ Подскажите, как удобнее это сделать? |
|||
|
||||
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 16 Всего: 142 |
Создай контрол на базе UserControl'а, а на нужный табпэйдж кидай уже его.
-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
SmartBye |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 60 Регистрация: 15.5.2008 Репутация: нет Всего: нет |
Не очень понял мысль.
Мне нужно сделать так, что бы на главной странице был только табконтрол оригинальный и пустой. А в самом проекте были классы-компоненты (или что-то подобное) табпейджей, которые я просто добавлю в главной программе через usercontrol1.tabs.Add(new mytabpage1()); usercontrol1.tabs.Add(new mytabpage2()) и т.д. Это можно реализовать, если просто создать класс, унаследовав его от таб пейджа, но тогда приходится всю гуевскую работу прописывать вручную. |
|||
|
||||
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 16 Всего: 142 |
Если тебе надо работу выполнить в дизайнере, то сделай всё на юзерконтроле? свойству Dock присвой значение Fill, а потом добавь его на табпэйдж(в коде).
-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
SmartBye |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 60 Регистрация: 15.5.2008 Репутация: нет Всего: нет |
Создал два компонента, один из них наследованный от таб пейджа, другой от юзерконтрола. На юзер контрол накидал кнопочек для теста. Вот только теперь не пойму, как добавить юзер контрол на таб пейдж =/
|
|||
|
||||
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 16 Всего: 142 |
Примерно так. -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
SmartBye |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 60 Регистрация: 15.5.2008 Репутация: нет Всего: нет |
Написав этот код, любой компонент на юзерконтроле вызывает исключение переполнения стека (+ [System.StackOverflowException] {Невозможно вычислить выражение, поскольку текущий поток находится в состоянии переполнения стека.} System.StackOverflowException), а если не добавлять компонентов на него, то исключение выбрасывает public MyTabPage() =(
|
|||
|
||||
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 16 Всего: 142 |
Погоди, сейчас попробую
Добавлено через 13 минут и 33 секунды Всё работает. Там в коде я просто букафки местами поменял(опечатка, contetn вместо content), так что если скопипастить, то будет ошибка. Присоединённый файл ( Кол-во скачиваний: 13 ) ![]() -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
SmartBye |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 60 Регистрация: 15.5.2008 Репутация: нет Всего: нет |
Ну я, естественно, не копипастил. Просто привел аналогию с твоим кодом. Сейчас попробую описать оба класса в ручную, что бы не добавилось чего лишнего.
|
|||
|
||||
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 16 Всего: 142 |
А чо пример не посмотрел?
Это сообщение отредактировал(а) diadiavova - 26.2.2009, 22:00 -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
SmartBye |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 60 Регистрация: 15.5.2008 Репутация: нет Всего: нет |
Сделал аналогично, как у тебя в примере, вроде получилось. Спасибо.
Но как-то оно все накручено больно. Я когда обдумывал все это, думал что должно получиться все более прозрачно. Может это вообще неправильный способ? А есть какой-то более подходящий? Кстати, насколько я знаю, делать вложенные классы не очень хорошо. Как-то можно избавиться от этого? |
|||
|
||||
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 16 Всего: 142 |
Это не вложенные классы. А использование контейнеров - нормальная вещь(кстати: сама вкладка - тоже контейнер, и табконтрол - тоже). Если что-то смущает, то есть другой способ. Создаёшь нужный контент в юзверьконтроле, а потом копируешь код, сгенерированный дизайнером и вставляешь куда надо.
-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
SmartBye |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 60 Регистрация: 15.5.2008 Репутация: нет Всего: нет |
Смущает то, что в юзер контроле находится таб пейдж, а не наоборот.
Ну этот код будет совсем неподдерживаемым =/ |
||||
|
|||||
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 16 Всего: 142 |
А почему он у тебя там находится? ![]() А чем он отличается от того, который ты можешь "ручками" написать? -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
SmartBye |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 60 Регистрация: 15.5.2008 Репутация: нет Всего: нет |
Ой... Не туда посмотрел. Показалось, что таб пейдж вложен в юзер контрол =) Потому и понять ничего не мог =) Присмотрелся, вынес таб пейдж в отдельный файл и все понятно стало.
Ну когда одна кнопочка на форме - это еще куда ни шло, а вот когда там много компонентов, то просто неприятно будет в этом копаться. Потому и встала проблема, что бы все это дело визуально редактировать. |
|||
|
||||
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 16 Всего: 142 |
А чо в них копаться...скопипастил и всё. Может только контейнер убрать(он для дизайнера нужен). Но вообще: первый вариант - более прямой.
-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
SmartBye |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 60 Регистрация: 15.5.2008 Репутация: нет Всего: нет |
А как насчет самой идеи этого способа? Есть у меня несколько разных по функционалу программ, написанных для одного проекта. Накопилось их уже довольно много, поэтому решил их объединить в одну под общим интерфейсом. По одной функциональной программе в таб.
До того, как начал разбираться со способом реализации, в голове виделось идеальным способом с точки зрения ооп. |
|||
|
||||
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 16 Всего: 142 |
Ну тут далеко за примерами ходить не надо - Visual Studio.
-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
SmartBye |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 60 Регистрация: 15.5.2008 Репутация: нет Всего: нет |
Я имею ввиду с точки зрения внутреннего дизайна.
|
|||
|
||||
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 16 Всего: 142 |
Если ты об эстетической стороне, то ИМХО - дело вкуса. А вот сам процесс я себе слабо представляю. Сдирать шкуру с готовых программ и запихивать во вкладки...
-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
SmartBye |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 60 Регистрация: 15.5.2008 Репутация: нет Всего: нет |
||||
|
||||
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 16 Всего: 142 |
Я не теоретик программирования, поэтому отношусь к этому вопросу просто: нужна тебе такая программа - пиши, нет - не пиши.
-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
SmartBye |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 60 Регистрация: 15.5.2008 Репутация: нет Всего: нет |
В общем, тема для меня уже кажется исчерпана. Вопросов пока нету. Спасибо, большое, за помощь =)
|
|||
|
||||
-Mikle- |
|
|||
![]() Невидимка Vingrad'а ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1672 Регистрация: 22.6.2003 Где: Казахстан, Астана Репутация: 8 Всего: 59 |
Если я правильно понял, то у тебя есть несколько уже готовых написанных программ, и ты хочешь их объединить?
Если так, то MDI тебе в помощь. С ним проще некуда. 1. создаешь новый проект 2. делаешь MDI форму 3. все готовые проекты добавляешь в солюшн нового проекта 4. и вызываешь просто формы из твоих проектов Ничего не придется переписывать, и, по моему, ничем не хуже идеи с табами, а для реализации проще и нагляднее. -------------------- Если тебе плюют в спину, значит ты впереди... |
|||
|
||||
SaS1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 14.6.2005 Репутация: нет Всего: нет |
SmartBye,
Ещё есть один способ - написать свой небольшой фремворк, который сам кидает в контейнер контролы, выравнивает их по определённым правилам, выставляет шрифты , рамеры ивсё такое... Это конечно не совсем уж легко, но зато потом можно юзать его везде в своих прилагах. Это самый правильный подход тк. писать код руками для нескольких сотен контролов не станешь, но и выравнивать их мышькой тоже не сильно приятное занятие... |
|||
|
||||
Nestap |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 221 Регистрация: 10.10.2008 Репутация: нет Всего: 0 |
-Mikle-,
а как в МДИ Форму? я открываю форму в МДИ!(форм2) как из форм2 открыть новую форму тоже в МДИ?? --------------------
<? echo "Nestap";?> |
|||
|
||||
SmartBye |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 60 Регистрация: 15.5.2008 Репутация: нет Всего: нет |
Ну их всеравно придется переписывать, так как писались они быстро и плохо. Писались из расчета - одна функция, одна программа. Вот это было бы шикарно. Сейчас всеравно пока только учусь. Неплохо было бы поухищряться. Вот только слабо себе все это представляю. Можно ли где-то примеры посмотреть, о чем Вы говорите? |
|||
|
||||
-Mikle- |
|
||||
![]() Невидимка Vingrad'а ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1672 Регистрация: 22.6.2003 Где: Казахстан, Астана Репутация: 8 Всего: 59 |
Ну тогда UserControl наследованный от TabPage не плохое решение.
1. создаешь проект 2. у единственной там формы ставишь свойство IsMdiContainer = true 3. у формы, которая должна быть дочерней, ставишь свойство IsMdiChild = true 4. the end! Вообще, если главная форма приложения имеет установленное свойство IsMdiContainer = тру, то любая форма в твоем приложении, которая имеет IsMdiChild = тру, будет дочерней независимо, откуда она открылась и количество дочерних окон не ограниченно. Надеюсь вы об этом спрашивали? -------------------- Если тебе плюют в спину, значит ты впереди... |
||||
|
|||||
Nestap |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 221 Регистрация: 10.10.2008 Репутация: нет Всего: 0 |
-Mikle-,
вот у миня фрмСтарт главная : из ниё я опен:
и дальше и frmIndicatori как опен другую форму? тоже чтоб било дочерней фрмСтарт ?? --------------------
<? echo "Nestap";?> |
|||
|
||||
-Mikle- |
|
||||
![]() Невидимка Vingrad'а ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1672 Регистрация: 22.6.2003 Где: Казахстан, Астана Репутация: 8 Всего: 59 |
я не понимаю, о чем ты спрашиваешь? об этом что-ли?
Добавлено @ 22:32 Ну или еще так:
-------------------- Если тебе плюют в спину, значит ты впереди... |
||||
|
|||||
Nestap |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 221 Регистрация: 10.10.2008 Репутация: нет Всего: 0 |
-Mikle-,
ооо вот ето; вот какой пустяк.... :-Д большое спосиба и извиняюсь за мой руссиан я не из росий и мне немношка труднее ... --------------------
<? echo "Nestap";?> |
|||
|
||||
-Mikle- |
|
|||
![]() Невидимка Vingrad'а ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1672 Регистрация: 22.6.2003 Где: Казахстан, Астана Репутация: 8 Всего: 59 |
-------------------- Если тебе плюют в спину, значит ты впереди... |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Разработка Windows Forms | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |