Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > размеры контрола при первой загрузке формы


Автор: IGV 20.10.2010, 10:04
Имеется некая форма на ней есть SplitterContainer, со свойством
Код

splitContainer.Dock = DockStyle.Fill;

Хочется определить позицию разделителя в соответствии с размерами формы.
Но проблема в том, что при загрузке форма разворачивается на весь экран, а в событии Shown размеры всё еще равны размерам формы в дизайнере.

В каком событии нужно выставить позицию разделителя, причем хочется изменить размер только 1 раз при первой загрузке формы?

Автор: diadiavova 20.10.2010, 10:41
Цитата(IGV @  20.10.2010,  11:04 Найти цитируемый пост)
 причем хочется изменить размер только 1 раз при первой загрузке формы?

Событие Load формы?

Автор: IGV 20.10.2010, 11:07
а размер тогда откуда не взять?

Автор: diadiavova 20.10.2010, 11:09
Размер чего? Формы? Из ее же свойств.

Автор: IGV 20.10.2010, 11:41
так она же растянется на весь экран
а когда я в Load'е обращусь к её свойствам они будут такие же как в дизайнере

Автор: diadiavova 20.10.2010, 11:51
А ты попробовал или предполагаешь?

Автор: CYBERDREAM 20.10.2010, 11:57
в FormLoad подпиши метод  на событие FormResize - там пошамань, и отпишись в нем же от этого события. По идее должно сработать

Автор: IGV 20.10.2010, 12:04
diadiavova, пробовал конечно

CYBERDREAM, хорошее решение, помогло. Спасибо

Автор: diadiavova 20.10.2010, 12:09
Цитата(IGV @  20.10.2010,  13:04 Найти цитируемый пост)
diadiavova, пробовал конечно

Попробуй еще раз
Код

        private void Form1_Load(object sender, EventArgs e)
        {
            splitContainer1.SplitterDistance = this.DesktopBounds.Width / 2;
        }

Автор: IGV 20.10.2010, 12:12
ну не знаю с чем связано, может с тем что у меня структура формы в реальности немного другая
там ещё парочка tableLayoutPanel'ов есть. Может из-за этого это не работает

Автор: IGV 20.10.2010, 12:28
только сейчас заметил:
у тебя:
Код

splitContainer1.SplitterDistance = this.DesktopBounds.Width / 2;

а нужно:
Код

splitContainer1.SplitterDistance = this.Width / 2;

Автор: diadiavova 20.10.2010, 12:33
Цитата(IGV @  20.10.2010,  13:28 Найти цитируемый пост)
только сейчас заметил:

Оно работает одинаково
Цитата(IGV @  20.10.2010,  13:12 Найти цитируемый пост)
может с тем что у меня структура формы в реальности немного другая

Не знаю как это может повлиять на свойства, отображающие размер окна.

пример в аттаче

Автор: IGV 21.10.2010, 14:54
на выходных поиграюсь, разберусь.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)