![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
marcusmae |
|
|||
![]() stravaganza ![]() ![]() Профиль Группа: Участник Сообщений: 874 Регистрация: 26.3.2006 Репутация: 22 Всего: 39 |
Здравствуйте.
Если я правильно понял, то в MVS 2005 с докингом контролов не всё благополучно. Опишу проблему. Допустим, внутри добавленного через дизайнер tabControl-а динамически создаются DataGridView с аттрибутом Dock равным DockStyle.Top, а затем маленький tabControl с DockStyle.Filling. Каким-то непонятным образом последний подлезает под DataGridView, заполняя всю область большого tabControl-a. Быстрого решения этой проблемы не нашёл и решил DataGridView оставить с DockStyle.Top, а размеры маленького tabControl-а подстраивать вручную по событию изменения размера их общего контейнера :
но что-то забыл, т.к. размер не изменяется, причём при debug-е вход в самый внутренний цикл происходит, но аттрибут Size для Controls[1] не меняется. ![]() Вообще, Dock иногда ведёт себя странно. Допустим, нужно расположить в левой области формы не один контрол, а два - один под другим. Попытка сделать это, присвоив каждому DockStyle.Left приводит к тому, что они располагаются слева, но последовательно по горизонтали. В общем-то, логично. Тогда кладём их вдвоём в GroupBox и уже ему назначаем DockStyle.Left. = То, что надо, вроде бы. Но опять-таки : стоит добавить в форму вертикальный Splitter и элемент с DockStyle.Fill, как всё это хозяйство начинает наползать друг на друга на 3-5 пикселей в месте расположения сплиттера. ![]() -------------------- ἀπὸ μηχανῆς θεός |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
А если тупо скопировать код из InitializeComponent() ?
-------------------- ![]() |
|||
|
||||
marcusmae |
|
|||
![]() stravaganza ![]() ![]() Профиль Группа: Участник Сообщений: 874 Регистрация: 26.3.2006 Репутация: 22 Всего: 39 |
Хм, так действительно делают? = Попробовал - ничего не изменилось. Во всяком случае, это - ответ только на вторую часть вопроса. -------------------- ἀπὸ μηχανῆς θεός |
|||
|
||||
ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 47 Всего: 149 |
Ага, есть такая трабла. Методом тыка выяснил, что при заполнении области (dock.fill), контрол смотрит только на контролы "под" ним или находящиеся с ним на одном уровне. (Не знаю как это называется, но есть в дизайнере кнопки: BringToBack и BringToFront которые меняют уровень контрола на форме. Т.Е. меняют положение контрола в третьем измерении (глубина). Может еще есть соответствующее свойство у контрола) Это сообщение отредактировал(а) ivashkanet - 2.7.2006, 11:44 |
|||
|
||||
Хоббит |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1263 Регистрация: 6.11.2005 Репутация: нет Всего: 1 |
свойство то есть... достигается оно нажатием правой кнопки мыши и BringToFront ToBack но в данном случае.. это не помогает вроде
|
|||
|
||||
ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 47 Всего: 149 |
Нет. Свойство должно хранить уровень (level) контрола на форме (Типа z-Index в HTML). 0 -- самый нижний. Чем больше число тем выше находиться контрол. Я прогнал эту пургу только чтобы объяснить что такое "уровень" контрола на форме ![]() |
|||
|
||||
marcusmae |
|
|||
![]() stravaganza ![]() ![]() Профиль Группа: Участник Сообщений: 874 Регистрация: 26.3.2006 Репутация: 22 Всего: 39 |
BringToBack/BringToFront - немного не то. В любом случае, контрол с большим индексом будет наползать на тот, что с меньшим.
![]() Может быть всё же не так сложно следить за размером контрола вручную? Кто бы и как стал делать? В приведённом мной ранее коде чего-то не хватает. -------------------- ἀπὸ μηχανῆς θεός |
|||
|
||||
ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 47 Всего: 149 |
Еще можно воспользоваться свойством контрола Anchor
|
|||
|
||||
marcusmae |
|
|||
![]() stravaganza ![]() ![]() Профиль Группа: Участник Сообщений: 874 Регистрация: 26.3.2006 Репутация: 22 Всего: 39 |
Удивительно, SendToBack/BringToFront действительно немного помогло! = Но, увы, при изменении размеров окна, контролы не держат приемлемого соотношения размеров : с увеличенем окна контрол с DockStyle.Top безвозвратно сужается. А если сразу нажать кнопку Maximize, то контрол с наибольшим z-индексом затмевает все остальные (хотя по-началу заполнял оставшееся место от контрола с DockStyle.Top). Цирк, в общем
![]() -------------------- ἀπὸ μηχανῆς θεός |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Проверил, сам докинг видать коряво работает. Дизайн-тайм ему нужен зачем-то...
![]() Может, он (дизайнер) в ресурсы формы ещё что-то складывает ?... -------------------- ![]() |
|||
|
||||
marcusmae |
|
|||
![]() stravaganza ![]() ![]() Профиль Группа: Участник Сообщений: 874 Регистрация: 26.3.2006 Репутация: 22 Всего: 39 |
Ура) Добавил Splitter между контролами, и всё стало работать нормально даже после изменения размеров: сплиттер своим Location фиксирует размеры одного из контролов. А чтобы один не подлезал под другой, нужно каждый вновь добавленный контрол "усылать" вглубь SendToBack()-ом.
-------------------- ἀπὸ μηχανῆς θεός |
|||
|
||||
ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 47 Всего: 149 |
||||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |