Задача начальной позиции дочерней формы MDI

У меня странная проблема с начальной позицией дочерней формы MDI. Вот мой код для начальной позиции, я хотел, чтобы она была посередине слева от родительской формы MDI.

        //show the task bar
        ChildForm c1 = new ChildForm();

        c1.MdiParent = this;
        c1.StartPosition = FormStartPosition.Manual;
        c1.Location = new Point(0, this.Height/2);

Странно то, что каждый раз, когда я запускаю свою родительскую форму Mdi, появляется вертикальная полоса прокрутки, а дочерняя форма mdi находится ниже половины высоты родительской формы MDI. Затем, если я прокручиваю полосу прокрутки вниз, чтобы увидеть всю дочернюю форму mdi, полоса прокрутки исчезнет.

После этого, независимо от того, как я изменяю размер родительской формы mdi, полоса прокрутки больше не будет отображаться.

Кто-нибудь знает почему?

Кроме того, мне было интересно, можно ли скрыть дочернюю форму mdi, оставив в родительской форме mdi только элемент управления, похожий на дескриптор. Если пользователь щелкнет этот дескриптор, форма снова появится. Если пользователь щелкнет в другом месте, форма скроется. Это что-то вроде панели задач Window.

Я пытался использовать form.hide (), но он скрывает всю дочернюю форму mdi.

Спасибо

Алекс


person alex    schedule 28.11.2009    source источник
comment
Вы можете проголосовать за правильный вопрос! :-)   -  person Please_Dont_Bully_Me_SO_Lords    schedule 17.05.2013


Ответы (2)


Возможно, в ваших расчетах учитывается панель окон вверху.

Вы можете посмотреть PointToClient или PointToScreen

person Adriaan Stander    schedule 28.11.2009
comment
Кто-нибудь знает ответ на мой второй вопрос? - person alex; 28.11.2009
comment
Какого черта, после нескольких попыток снова появляется полоса прокрутки, на этот раз не только вертикальная, иногда появляется и горизонтальная. - person alex; 28.11.2009

вы sholud минус высота и ширина дочерней формы, как это

c1.Location = new Point(0, (this.Height - c1.Height)/2); 
person Amro    schedule 14.12.2010