![]() |
|
Модераторы: gambit, Partizan |
![]()
|
|
| Vitalik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Координатор проекта Сообщений: 653 Регистрация: 8.11.2004 Где: Ukraine, Kharkov Репутация: нет Всего: 12 |
Доброго времени суток!
Собственно возник вопрос по использованию Splitter'а в Visual Studio .NET... В Delphi с этим было просто, достаточно было кинуть один компонент с Allign = alLeft (Dock = Left), а другой с Align = alClient (Dock = Fill). После этого кинув Splitter с Allign = alLeft всё уже начинало правильно работать. Ситуация с .NET по видимому другая... Интуитивно догадаться как им можно нормально пользоваться у меня не получилось... В голову приходит только решение "в лоб" с обработкой событий от Splitter и ручного изменения размеров компонентов, но это, согласитесь, ужасное решение Заранее благодарен за помощь в разрешении этого вопроса |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 24 Всего: 232 |
Рассказываю на примере двух панелей (Panel), разделённых сплиттером. Предположим, у нас есть форма
1) Перетягиваем на форму первую панель, и выставляем ей в Properties св-во Dock=Left 2) Перетягиваем на форму сплиттер, отпускаем возле первой панели - он автоматически становится справа от панели 3) Тянем на форму вторую панель, отпускаем её правее сплиттера и выставляем св-во Dock=Fill - панель займет всё оставшееся место. У обеих панелей можно сделать с BorderStyle=Fixed3D, тогда сплиттер будет видно -------------------- ![]() |
|||
|
||||
| Vitalik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Координатор проекта Сообщений: 653 Регистрация: 8.11.2004 Где: Ukraine, Kharkov Репутация: нет Всего: 12 |
Да, действительно работает, но, получается, только с панелями. Обычные контролы так не сработают
Спасибо! |
|||
|
||||
| Papirus |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 298 Регистрация: 19.4.2005 Где: Санкт-Петербург Репутация: -1 Всего: 1 |
С чего такой вывод? С панелями удобно, если их в свою очередь надо разделить сплиттерами... А так вместо панели попробуйте грид или листвью или... |
|||
|
||||
| Denn |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 143 Регистрация: 6.8.2005 Репутация: нет Всего: 2 |
для сплиттеров для контролов контролы помещаются на панели. |
|||
|
||||
| Vitalik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Координатор проекта Сообщений: 653 Регистрация: 8.11.2004 Где: Ukraine, Kharkov Репутация: нет Всего: 12 |
Гм... Попробовал на чистом проекте - всё работает и с обычными контролами...
А вот если менять существующий проект, то при установке Dock = Fill для контрола, он всё равно разворачивается на всю форму, игнорируя Splitter и второй контрол (с Dock = Left)... И только после удаления этого контрола и создания вместо него нового - он начинает нормально стыковаться со Splitter'ом |
|||
|
||||
| jfx |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 18.10.2004 Репутация: нет Всего: 1 |
А как то эту проблему можно решить? После манипуляций со сплитером и готовыми (не только что созданными) контралами с панели вообще все исчезло
|
|||
|
||||
| ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 11 Всего: 149 |
Скорее всего они ушли на задний план. Попробуй выделить невидимый контрол (через вскладку свойств, вверху можно выбрать...) а потом нажать на панели сверху BringToFront |
|||
|
||||
| jfx |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 18.10.2004 Репутация: нет Всего: 1 |
Не, там какой-то другой прикол. Исчезает запись в коде типа Form.Controls.Add(...);
Т.е. сделал я панель, положил на нее контрол, назначил ему докинг, добавил сплитер, добавил другой контрол... и вот после того как нажимаеш F5 или переключаешся между окнами, последний контрол исчезает. В списке он есть, но вот там где на панель добавляются контролы в коде, код добавления последнего контрола исчезает... Причем если в ручную прописать он его все равно удаляет... Что-то я никак не пойму в чем дело... С этой проблемой сталкивался давным давно, так и не нашел приемлемого решения (перерисовка всей формы с нуля не решение - но только так удавалось добиться чего-то) и в последнее время старался обходится без сплитера из стадрартного набора. Но вот сейчас приспичело и теже проблемы... |
|||
|
||||
| jfx |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 18.10.2004 Репутация: нет Всего: 1 |
Тут вот еще какая непонятность:
Контрол, после того как исчезает из дизайнера, вообще пропадает из поля зрения студии. Что я имею ввиду
Дык вот, при попытке ввести this.grpSearch.Controls.Add(this. в списке выбора отсутствует panel1. Хотя вот она, чуть выше определена, но нет ее... Что за приколы??? |
|||
|
||||
| stab |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: 1 Всего: 48 |
мне в таких случаях помогает Rebuild Project, если и это не помогает, тогда перезапуск студии. -------------------- 6, 6, 6 - the number of the beast. |
|||
|
||||
| Аленка |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 16.6.2006 Репутация: нет Всего: нет |
Почему так получается не подскажу, но знаю как можно сделать, чтобы код не исчезал
Некоторый код или даже весь, можно перенести из InitializeComponent() в конструктор формы или контрола. Вставить после вызова InitializeComponent(). |
|||
|
||||
| stab |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: 1 Всего: 48 |
тут вся фишка в порядке засовывания контролов на родтельский контрол (Controls.Add). порядок можно подправить только редактируя код сгенерированный дизайнером, что ужасно не удобно. сплитер должен добавляться раньше контрола с Dock = Fill. -------------------- 6, 6, 6 - the number of the beast. |
|||
|
||||
| jfx |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 18.10.2004 Репутация: нет Всего: 1 |
Ну ладно, это полбеды... но вот почему переменная исчезает из поля видимости студии? Ребилд и перезапуск студии не помогают
|
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Разработка Windows Forms | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |