| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Разработка Windows Forms > Splitter, как юзать? :) |
| Автор: Vitalik 4.10.2005, 22:42 |
| Доброго времени суток! Собственно возник вопрос по использованию Splitter'а в Visual Studio .NET... В Delphi с этим было просто, достаточно было кинуть один компонент с Allign = alLeft (Dock = Left), а другой с Align = alClient (Dock = Fill). После этого кинув Splitter с Allign = alLeft всё уже начинало правильно работать. Ситуация с .NET по видимому другая... Интуитивно догадаться как им можно нормально пользоваться у меня не получилось... В голову приходит только решение "в лоб" с обработкой событий от Splitter и ручного изменения размеров компонентов, но это, согласитесь, ужасное решение Заранее благодарен за помощь в разрешении этого вопроса |
| Автор: mr.DUDA 5.10.2005, 09:02 |
| Рассказываю на примере двух панелей (Panel), разделённых сплиттером. Предположим, у нас есть форма 1) Перетягиваем на форму первую панель, и выставляем ей в Properties св-во Dock=Left 2) Перетягиваем на форму сплиттер, отпускаем возле первой панели - он автоматически становится справа от панели 3) Тянем на форму вторую панель, отпускаем её правее сплиттера и выставляем св-во Dock=Fill - панель займет всё оставшееся место. У обеих панелей можно сделать с BorderStyle=Fixed3D, тогда сплиттер будет видно |
| Автор: Vitalik 5.10.2005, 15:23 |
| Да, действительно работает, но, получается, только с панелями. Обычные контролы так не сработают Спасибо! |
| Автор: Papirus 6.10.2005, 12:14 | ||
С чего такой вывод? С панелями удобно, если их в свою очередь надо разделить сплиттерами... А так вместо панели попробуйте грид или листвью или... |
| Автор: Denn 6.10.2005, 15:07 | ||
для сплиттеров для контролов контролы помещаются на панели. |
| Автор: Vitalik 6.10.2005, 16:16 |
| Гм... Попробовал на чистом проекте - всё работает и с обычными контролами... А вот если менять существующий проект, то при установке Dock = Fill для контрола, он всё равно разворачивается на всю форму, игнорируя Splitter и второй контрол (с Dock = Left)... И только после удаления этого контрола и создания вместо него нового - он начинает нормально стыковаться со Splitter'ом |
| Автор: jfx 23.6.2006, 13:22 |
| А как то эту проблему можно решить? После манипуляций со сплитером и готовыми (не только что созданными) контралами с панели вообще все исчезло |
| Автор: jfx 23.6.2006, 14:13 |
| Не, там какой-то другой прикол. Исчезает запись в коде типа Form.Controls.Add(...); Т.е. сделал я панель, положил на нее контрол, назначил ему докинг, добавил сплитер, добавил другой контрол... и вот после того как нажимаеш F5 или переключаешся между окнами, последний контрол исчезает. В списке он есть, но вот там где на панель добавляются контролы в коде, код добавления последнего контрола исчезает... Причем если в ручную прописать он его все равно удаляет... Что-то я никак не пойму в чем дело... С этой проблемой сталкивался давным давно, так и не нашел приемлемого решения (перерисовка всей формы с нуля не решение - но только так удавалось добиться чего-то) и в последнее время старался обходится без сплитера из стадрартного набора. Но вот сейчас приспичело и теже проблемы... |
| Автор: jfx 23.6.2006, 14:41 | ||
| Тут вот еще какая непонятность: Контрол, после того как исчезает из дизайнера, вообще пропадает из поля зрения студии. Что я имею ввиду
Дык вот, при попытке ввести this.grpSearch.Controls.Add(this. в списке выбора отсутствует panel1. Хотя вот она, чуть выше определена, но нет ее... Что за приколы??? |
| Автор: stab 24.6.2006, 12:19 | ||
мне в таких случаях помогает Rebuild Project, если и это не помогает, тогда перезапуск студии. |
| Автор: Аленка 24.6.2006, 12:20 |
| Почему так получается не подскажу, но знаю как можно сделать, чтобы код не исчезал Некоторый код или даже весь, можно перенести из InitializeComponent() в конструктор формы или контрола. Вставить после вызова InitializeComponent(). |
| Автор: stab 24.6.2006, 12:25 | ||
тут вся фишка в порядке засовывания контролов на родтельский контрол (Controls.Add). порядок можно подправить только редактируя код сгенерированный дизайнером, что ужасно не удобно. сплитер должен добавляться раньше контрола с Dock = Fill. |
| Автор: jfx 24.6.2006, 14:43 |
| Ну ладно, это полбеды... но вот почему переменная исчезает из поля видимости студии? Ребилд и перезапуск студии не помогают |