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


Автор: DenwerD 22.1.2009, 14:44
Доброго времени суток.

Преамбула:
Хочу реализовать интерфейс для отображения настроек как в uTorrent. Кто не знает или не понял, то
там:
TreeView в котором в качестве узлов - названия групп настроек ( соединение, кэширование и т.д.). При щелчке на одном узле дерева справа отображаются различные контролы нужные для ввода настроек раздела.

Как мне кажется это можно реализовать:
1 Насоздавать все нужные контролы, а потом играться свойством Visible для каждого контрола в зависимости от выбранного раздела.
2 Создавать динамически контролы, помещать их в какой либо контейнер ( один раздел - один контейнер с контролами) и менять у контейнера Visible.

Или ....... ?????

Подскажите пожалуйста, как можно это релизовать. Может быть кто уже делал? поделитесь опытом.





Автор: nagg 22.1.2009, 18:50
На каждый нод настроек сделайте UserControl, на который накидайте нужные контролы, а потом на область справа при щелчке на нод кидаете нужный UserControl (например на панельку за-Dock-Fill-ить). Ибо накидать все-все контролы всех настроек и управлять только их видемостью - сойдёте с ума от такого индийского кода

Автор: DenwerD 23.1.2009, 10:12
Цитата(nagg @ 22.1.2009,  18:50)
На каждый нод настроек сделайте UserControl, на который накидайте нужные контролы, а потом на область справа при щелчке на нод кидаете нужный UserControl (например на панельку за-Dock-Fill-ить). Ибо накидать все-все контролы всех настроек и управлять только их видемостью - сойдёте с ума от такого индийского кода

Согласен что вариант номер раз попахивает индийцами. А насчёт UserControl, это в принципе второй вариант ( я имел ввиду не UserControl а Panel  ), только вот про докинг забыл. Нада не только  докировать, но и менять видимость, мне так кажется
Так в принципе и сделаю.

Спасибо большое что не прошли мимо и посоветовали.

Автор: QryStaL 23.1.2009, 10:44
DenwerD, взять TabControl, на каждую закладку группу настроек, по щелчке на узле в TreeView - выделять соответствующую закладку (+ можно еще скрыть корешки)

Автор: DenwerD 23.1.2009, 10:55
Списибо, QryStaL. Тоже вариант.

Блин, теперь другая проблема. Что выбрать? TabControl или UserControl (Критерии выбора: занимаемы объём памяти). 

Мое мнение такое:


UserControl займёт меньше памяти ибо имеет меньший функционал чем TabControl и отрисовка данного контейнера я думаю займёт меньше времени.

Поправте если я не прав.

Автор: nagg 23.1.2009, 11:45
Госпади, ну и проблемы у вас, или у вас там такое число контролов что вы заметите разницу?
Каждая страница TabControll'а - по сути UserControl

Автор: DenwerD 23.1.2009, 11:59
Цитата(nagg @ 23.1.2009,  11:45)
Госпади, ну и проблемы у вас, или у вас там такое число контролов что вы заметите разницу?
Каждая страница TabControll'а - по сути UserControl

Да в приципе проблемы нет. Просто я себе взял за правило прежде чем что то сделать ( в рамках кодописания) нужно подумать: "Что будет быстрее"?. Вот по этому и спрашиваю.

Добавлено через 43 секунды
Всем спасибо. Вопрос закрыт.

Автор: THandle 23.1.2009, 22:39
Цитата(DenwerD @  23.1.2009,  11:59 Найти цитируемый пост)
Всем спасибо. Вопрос закрыт. 



M
THandle
Не забываем в таком случае помечать тему решенной.

Автор: Любитель 25.1.2009, 18:13
Цитата(DenwerD @  23.1.2009,  11:59 Найти цитируемый пост)
Просто я себе взял за правило прежде чем что то сделать ( в рамках кодописания) нужно подумать: "Что будет быстрее"?.

Сорри за вообщем-то оффтоп - но выкиньте лучше это правило. Преждевременная оптимизация - это зло. Тем более оптимизация ГУИ (если у вас не мегасложный гуи). Оптимизировать надо тогда, когда это надо. Когда реально встаёт проблема производительности. И, конечно, не всё подряд, а то, что действительно даст прирост производительности (привыкаем пользоваться профайлерами).

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