Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Docking контролов


Автор: Skywalker 9.1.2006, 03:43
Есть много кнопок и есть listbox. При нажатии на кнопку листбокс появляется под ней, а все остальные кнопки должны сместится вниз под листбокс. Как можно это реализовать без координат?

Автор: mr.DUDA 9.1.2006, 08:48
Без координат далеко не уедешь. Но можно придумать следующее:
- кидаем на форму 3 панели, верхняя Dock=Top, средняя Dock=Top, нижняя Dock=Fill
- на верхнюю панель кидаем кнопку, показывающую листбокс, ставим высоту верхней панели строго по высоте кнопки
- на среднюю панель кидаем листбокс, ставим Dock=Fill, высота панели должна соответствовать желаемой высоте листбокса в видимом режиме
- на нижней панели размещаем все остальные кнопки

Теперь, при старте программы, ставим нулевую высоту у средней панели. В результате она полностью скроется, а нижняя панель (с остальными кнопками) займёт всё доступное место. Далее, при нажатии на верхнюю кнопку, ставим ненулевой размер у средней панели - листбокс станет видимым, а остальные кнопки "съедут" вниз, под листбокс.

ИМХО, чем такие "извраты", лучше чуть дольше посидеть и подобрать координаты для контролов в каждом из двух режимов.

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