2015-06-22 4 views
1

У меня есть приложение MDI, и я недавно добавил новый элемент управления в контейнер MDI, который охватывает клиентскую область (область, где дети появляются и функционируют). Беда в том, когда они пытаются максимизировать свои формы, она появляется за боковой панели:Укажите местоположение максимальной формы?

Side panel overlapping child form

Оригинальная форма для сравнения (чтобы увидеть перекрытия)

Original child form

Я знаю, что я может ограничить общий размер каждой формы, которая максимизируется, используя свойство Form.MaximumSize, однако я не уверен, как установить расположение x/y формы, чтобы она сидела рядом с боковой панелью.

Я мог бы использовать боковую панель в качестве маркера, то есть x = sidepanel.Width, потому что это никогда не изменится, но я не знаю, как применить это к максимальной форме.

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

+0

Ваш контроль на MdiParent является "плавающим". Для правильной работы в среде Mdi он должен быть ** Прикреплен ** к одному из краев (левый край в вашем случае). Это заставит его заняться всем левым краем клиентской области, однако ... –

+0

@Idle_Mind ok, поэтому я попробовал это, только проблема в том, что он занимает всю сторону экрана - то есть он даже толкает панели меню в сторону. Есть ли способ, которым я могу использовать это, чтобы имитировать то, что у меня есть на приведенном выше изображении (он находится ниже строк меню)? – Ben

ответ

1

Итак, после некоторого возиться, я обнаружил, что главная проблема заключалась в том, что, поскольку я добавлял управление динамически, управление им было немного сложнее. Так что вместо этого я сделал это:

  • Добавлен панель (с помощью формы конструктора) в MDI Parent
  • Установите Dock свойство «левый»
  • Добавлено пользовательский элемент управления динамически на панель:

    SidePanel = new Menu_SidePanel(); 
    
    SidePanel.Location = new System.Drawing.Point(0, 0); 
    SidePanel.Anchor = (AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left); 
    
    panel1.Controls.Add(SidePanel); 
    

Теперь, так как панель была добавлена, и «стыковка» в форме Родитель, остальные дочерние формы, когда максимально использовать боковой Панель как еще одна граница.

enter image description here

Смежные вопросы