none
Как отрыть одну форму внутри другой, чтоб дочерняя не выходила за рамки родительской? RRS feed

  • Вопрос

  • Auth auth = new Auth();
    auth.Parent = this;
    auth.ShowDialog();

    Пробую так, выдает ошибку "Элемент верхнего уровня нельзя добавлять к элементу управления."

    Auth auth = new Auth();
    auth.MdiParent = this;
    auth.ShowDialog();

    Пробую так ругается "Форма, указанная как MdiParent для данной формы, не является MdiContainer."

    Подскажите, пожалуйста, как это сделать?
    1 ноября 2013 г. 8:37

Ответы

  • this.IsMdiContainer = true;
    
    Auth auth = new Auth();
    auth.MdiParent = this;
    
    auth.Show();
    Свойство IsMdiContainer можно выставить изначально в визуальном конструкторе.
    1 ноября 2013 г. 9:03
  • Добрый день.

    Стандартным механизмом в два клика - никак. Ну или отказаться от ShowDialog и перейти действительно на MDI.

    Я бы делал так:

    1. Размещал дочернюю форму так, чтобы она находилась "внутри" родительской:

    Auth auth = new Auth();
    auth.Parent = this;
    int left = this.Left + (this.Width - auth.Width) / 2;
    int top = this.Top + (this.Height - auth.Height) / 2;
    auth.Left = left;
    auth.Top = top;

    2. Отслеживал перемещение дочерней формы и если она выходит за границы родительской, то принудительно возвращал бы ее в нужное расположение.
    1 ноября 2013 г. 9:04
    Отвечающий

Все ответы

  • this.IsMdiContainer = true;
    
    Auth auth = new Auth();
    auth.MdiParent = this;
    
    auth.Show();
    Свойство IsMdiContainer можно выставить изначально в визуальном конструкторе.
    1 ноября 2013 г. 9:03
  • Добрый день.

    Стандартным механизмом в два клика - никак. Ну или отказаться от ShowDialog и перейти действительно на MDI.

    Я бы делал так:

    1. Размещал дочернюю форму так, чтобы она находилась "внутри" родительской:

    Auth auth = new Auth();
    auth.Parent = this;
    int left = this.Left + (this.Width - auth.Width) / 2;
    int top = this.Top + (this.Height - auth.Height) / 2;
    auth.Left = left;
    auth.Top = top;

    2. Отслеживал перемещение дочерней формы и если она выходит за границы родительской, то принудительно возвращал бы ее в нужное расположение.
    1 ноября 2013 г. 9:04
    Отвечающий
  • this.IsMdiContainer = true;
    
    Auth auth = new Auth();
    auth.MdiParent = this;
    
    auth.Show();
    Свойство IsMdiContainer можно выставить изначально в визуальном конструкторе.
    это свойство и нужно выставить. Ошибка вылетает из за нее
    1 ноября 2013 г. 15:57