我有一个父 mdi 窗口,它有两个可以打开和关闭的子窗口。父母以最大化开始,我想让孩子们不要越过父母的界限,这样孩子们就一直在屏幕上 100%。
父(mdi)最大化,我希望子(窗体)窗口留在屏幕上,不能被拖到监视器外。基本上如何阻止孩子被拖出屏幕。
有什么想法吗?
这可能是您问题的答案:
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 子窗体中。即使打开双缓冲它也会闪烁一点,但这是我找到的最佳解决方案。