Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Сворачиваемые боковые панели

38K
20 декабря 2010 года
EqKeeper
94 / / 19.02.2010
Доброго времени суток!

Интересует, как в VS2010/C# Windows Forms сделать сворачиваемые боковые панели?



Сам я сделал подобную штуку через SplitContainer и кнопку делающую видимой или невидимой одну из его частей, и увеличивающую в размерах другую. Удобоваримо, но весьма далеко от идеала. =\ Есть готовые решения или нужно писать свой контрол?
29K
23 декабря 2010 года
Енот_в_Засаде
224 / / 09.11.2010
на WPF можно попробовать
38K
25 декабря 2010 года
EqKeeper
94 / / 19.02.2010
WPF еще нужно изучить, а учить пока не по чему. :)
Но если расскажешь - как, буду премного благодарен. Давно собираюсь перейти на WPF, но пока она меня только пугает...
29K
26 декабря 2010 года
Енот_в_Засаде
224 / / 09.11.2010
Цитата: EqKeeper
WPF еще нужно изучить, а учить пока не по чему. :)
Но если расскажешь - как, буду премного благодарен. Давно собираюсь перейти на WPF, но пока она меня только пугает...


я сам только начал осваивать:) вообще, про WPF я смотрел в книге Троелсен Э. Язык программирования С# и платформа NET(4изд)

9.7K
02 апреля 2011 года
Vitamant
228 / / 07.02.2011
Все верно. Основа - SplitContainer. Но вместо одной кнопки, используются две Label с Dock left\rigth\up\bottom - в зависимости от того с какой стороны "выскакивает" панель. У обеих лейблов убирается autosize, фон, меняется шрифт (скажем Wingdings 3; 6pt), тогда символы стрелок будут на "t" и "u" соответственно. Можно сменить цвет на серенький, положение подписи - по середине. На клик вешаем что-нибудь вроде:

private void treeViewVisibilityButton_Click(object sender, EventArgs e)
{
bool collapsed = (sender as Label).Name == "hideFileListButton";
splitContainer1.Panel1Collapsed = collapsed;
hideFileListButton.Visible = !collapsed;
showFileListButton.Visible = collapsed;
}

К сожалению, если сворачиваемых панелей нужно несколько, то под каждую из них придется делать SplitContainer. Впрочем вторую, видимую его часть, можно вообще ограничить одной лишь кнопкой. Но это уже извращения, которые, обычно, не нужны.

А дальше ставим сплиту Dock Fill и наслаждаемся результатом.



----

А если нет нужды в менябельности ширины этих панелей, то можно обойтись и без SplitContainer'а и всего одним лэйблом: достаточно задать соседним элементам Dock в значении Fill (или аналогичный сворачиваемой панели), а при щелчке на label менять значение visible убираемого элемента.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог