0

我有一个父 mdi 窗口,它有两个可以打开和关闭的子窗口。父母以最大化开始,我想让孩子们不要越过父母的界限,这样孩子们就一直在屏幕上 100%。

父(mdi)最大化,我希望子(窗体)窗口留在屏幕上,不能被拖到监视器外。基本上如何阻止孩子被拖出屏幕。

有什么想法吗?

4

1 回答 1

2

可能是您问题的答案:

protected override void OnMove(EventArgs e)
{
    //
    // Get the MDI Client window reference
    //
    MdiClient mdiClient = null;
    foreach(Control ctl in MdiParent.Controls)
    {
        mdiClient = ctl as MdiClient;
        if(mdiClient != null)
            break;
    }
    //
    // Don't allow moving form outside of MDI client bounds
    //
    if(Left < mdiClient.ClientRectangle.Left)
        Left = mdiClient.ClientRectangle.Left;
    if(Top < mdiClient.ClientRectangle.Top)
        Top = mdiClient.ClientRectangle.Top;
    if(Top + Height > mdiClient.ClientRectangle.Height)
        Top = mdiClient.ClientRectangle.Height - Height;
    if(Left + Width > mdiClient.ClientRectangle.Width)
        Left = mdiClient.ClientRectangle.Width - Width;
    base.OnMove(e);
}

将其添加到您的 MDI 子窗体中。即使打开双缓冲它也会闪烁一点,但这是我找到的最佳解决方案。

于 2012-06-20T16:20:32.520 回答