C # WinForms: Как ограничить дочерние окна MDI, чтобы всегда быть в пределах MDIParent? - PullRequest
0 голосов
/ 23 июня 2011

У меня есть приложение C # WinForms MDI, у которого есть несколько дочерних окон MDI. Пользователи могут перемещать или изменять размеры отдельных окон. Проблема заключается в том, что когда они перемещают окна к границам родительского объекта MDI, в окне MDIParent появляются полосы прокрутки, и пользователь может перетаскивать дочерние окна за пределы родительского объекта MDI. Есть ли способ изменить это поведение, чтобы дочерние окна всегда находились внутри родительского окна, а полосы прокрутки не создавались? Я знаю, что есть способы «вытолкнуть» дочерние окна обратно в родительское окно, переопределив событие OnMove. Я хочу, чтобы окна оставались внутри, даже когда пользователь перемещает окно. Есть ли способ сделать это?

1 Ответ

0 голосов
/ 23 июня 2011

В дочерних формах обработайте событие FormResize примерно так:

private void Form1_Resize(object sender, EventArgs e)
{
    Size pSize = this.ParentForm.ClientSize;

    Size maxAllowed = new Size(pSize.Width - this.Left, pSize.Height - this.Top);

    // Resize the child if it goes out of bounds
    if (this.Height > maxAllowed.Height)
        this.Height = maxAllowed.Height;

    if (this.Width > maxAllowed.Width)
        this.Width = maxAllowed.Width;
}

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

Я бы, вероятно, переделал его так, чтобы он переместился обратно в границы вместо изменения его размера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...