Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Splitter, как юзать? :) 
:(
    Опции темы
Vitalik
  Дата 4.10.2005, 22:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Координатор проекта
Сообщений: 653
Регистрация: 8.11.2004
Где: Ukraine, Kharkov

Репутация: нет
Всего: 12



Доброго времени суток! smile

Собственно возник вопрос по использованию Splitter'а в Visual Studio .NET...

В Delphi с этим было просто, достаточно было кинуть один компонент с Allign = alLeft (Dock = Left), а другой с Align = alClient (Dock = Fill). После этого кинув Splitter с Allign = alLeft всё уже начинало правильно работать.

Ситуация с .NET по видимому другая... Интуитивно догадаться как им можно нормально пользоваться у меня не получилось... В голову приходит только решение "в лоб" с обработкой событий от Splitter и ручного изменения размеров компонентов, но это, согласитесь, ужасное решение smile

Заранее благодарен за помощь в разрешении этого вопроса smile
PM MAIL WWW ICQ YIM   Вверх
mr.DUDA
Дата 5.10.2005, 09:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 24
Всего: 232



Рассказываю на примере двух панелей (Panel), разделённых сплиттером. Предположим, у нас есть форма smile. На форме вначале ничего нету. Итак:

1) Перетягиваем на форму первую панель, и выставляем ей в Properties св-во Dock=Left
2) Перетягиваем на форму сплиттер, отпускаем возле первой панели - он автоматически становится справа от панели
3) Тянем на форму вторую панель, отпускаем её правее сплиттера и выставляем св-во Dock=Fill - панель займет всё оставшееся место.

У обеих панелей можно сделать с BorderStyle=Fixed3D, тогда сплиттер будет видно smile


--------------------
user posted image
PM MAIL WWW   Вверх
Vitalik
Дата 5.10.2005, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Координатор проекта
Сообщений: 653
Регистрация: 8.11.2004
Где: Ukraine, Kharkov

Репутация: нет
Всего: 12



Да, действительно работает, но, получается, только с панелями. Обычные контролы так не сработают smile
Спасибо! smile
PM MAIL WWW ICQ YIM   Вверх
Papirus
Дата 6.10.2005, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 298
Регистрация: 19.4.2005
Где: Санкт-Петербург

Репутация: -1
Всего: 1



Цитата(Vitalik @ 5.10.2005, 15:23)
Да, действительно работает, но, получается, только с панелями. Обычные контролы так не сработают smile
Спасибо! smile

С чего такой вывод?

С панелями удобно, если их в свою очередь надо разделить сплиттерами... А так вместо панели попробуйте грид или листвью или...
PM MAIL ICQ   Вверх
Denn
Дата 6.10.2005, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 143
Регистрация: 6.8.2005

Репутация: нет
Всего: 2



Цитата(Vitalik @ 5.10.2005, 15:23)
Обычные контролы так не сработают

для сплиттеров для контролов контролы помещаются на панели. smile
PM MAIL ICQ   Вверх
Vitalik
Дата 6.10.2005, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Координатор проекта
Сообщений: 653
Регистрация: 8.11.2004
Где: Ukraine, Kharkov

Репутация: нет
Всего: 12



Гм... Попробовал на чистом проекте - всё работает и с обычными контролами...

А вот если менять существующий проект, то при установке Dock = Fill для контрола, он всё равно разворачивается на всю форму, игнорируя Splitter и второй контрол (с Dock = Left)...
И только после удаления этого контрола и создания вместо него нового - он начинает нормально стыковаться со Splitter'ом smile

PM MAIL WWW ICQ YIM   Вверх
jfx
Дата 23.6.2006, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 18.10.2004

Репутация: нет
Всего: 1



А как то эту проблему можно решить? После манипуляций со сплитером и готовыми (не только что созданными) контралами с панели вообще все исчезло smile Т.е. все контралы присутствуют, ошибок нет, координаты/размеры в норме, но в дизайнере их невидно. Может заплаты были какие-то но я пропустил? Студия 2003. 
PM MAIL   Вверх
ivashkanet
Дата 23.6.2006, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 11
Всего: 149



Цитата(jfx @  23.6.2006,  13:22 Найти цитируемый пост)
После манипуляций со сплитером и готовыми (не только что созданными) контралами с панели вообще все исчезло

Скорее всего они ушли на задний план. Попробуй выделить невидимый контрол (через вскладку свойств, вверху можно выбрать...) а потом нажать на панели сверху BringToFront 
PM MAIL WWW ICQ   Вверх
jfx
Дата 23.6.2006, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 18.10.2004

Репутация: нет
Всего: 1



Не, там какой-то другой прикол. Исчезает запись в коде типа Form.Controls.Add(...);
Т.е. сделал я панель, положил на нее контрол, назначил ему докинг, добавил сплитер, добавил другой контрол... и вот после того как нажимаеш F5 или переключаешся между окнами, последний контрол исчезает. В списке он есть, но вот там где на панель добавляются контролы в коде, код добавления последнего контрола исчезает... Причем если в ручную прописать он его все равно удаляет... Что-то я никак не пойму в чем дело... С этой проблемой сталкивался давным давно, так и не нашел приемлемого решения (перерисовка всей формы с нуля не решение - но только так удавалось добиться чего-то) и в последнее время старался обходится без сплитера из стадрартного набора. Но вот сейчас приспичело и теже проблемы...  
PM MAIL   Вверх
jfx
Дата 23.6.2006, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 18.10.2004

Репутация: нет
Всего: 1



Тут вот еще какая непонятность:
Контрол, после того как исчезает из дизайнера, вообще пропадает из поля зрения студии.
Что я имею ввиду
Код

public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.Panel panel1;

//...

private void InitializeComponent()
{
// ...
// 
// grpSearch
// 
this.grpSearch.Controls.Add(this.panel1);
// ...
}
}


Дык вот, при попытке ввести this.grpSearch.Controls.Add(this. в списке выбора отсутствует panel1. Хотя вот она, чуть выше определена, но нет ее... Что за приколы??? 
PM MAIL   Вверх
stab
Дата 24.6.2006, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 1
Всего: 48



Цитата(jfx @  23.6.2006,  18:41 Найти цитируемый пост)
Дык вот, при попытке ввести this.grpSearch.Controls.Add(this. в списке выбора отсутствует panel1. Хотя вот она, чуть выше определена, но нет ее... Что за приколы??? 


мне в таких случаях помогает Rebuild Project, если и это не помогает, тогда перезапуск студии. 


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
Аленка
Дата 24.6.2006, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 16.6.2006

Репутация: нет
Всего: нет



Почему так получается не подскажу, но знаю как можно сделать, чтобы код не исчезал  smile 
Некоторый код или даже весь, можно перенести из InitializeComponent() в конструктор формы или контрола. Вставить после вызова InitializeComponent(). 
PM   Вверх
stab
Дата 24.6.2006, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 1
Всего: 48



Цитата(Vitalik @  6.10.2005,  20:16 Найти цитируемый пост)
А вот если менять существующий проект, то при установке Dock = Fill для контрола, он всё равно разворачивается на всю форму, игнорируя Splitter и второй контрол (с Dock = Left)... И только после удаления этого контрола и создания вместо него нового - он начинает нормально стыковаться со Splitter'ом


тут вся фишка в порядке засовывания контролов на родтельский контрол (Controls.Add). порядок можно подправить только редактируя код сгенерированный дизайнером, что ужасно не удобно. сплитер должен добавляться раньше контрола с Dock = Fill.  


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
jfx
Дата 24.6.2006, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 18.10.2004

Репутация: нет
Всего: 1



Ну ладно, это полбеды... но вот почему переменная исчезает из поля видимости студии? Ребилд и перезапуск студии не помогают smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.0559 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.