2012-06-20 5 views
0

У меня есть родительское окно mdi, в котором есть два дочерних окна, которые вы можете открыть и закрыть. Родитель запускается как максимизированный, и я хочу, чтобы дети не пересекали границы родителя, чтобы дети были на 100% на экране в любое время.C# содержит дочернюю форму в родительском окне

Родитель (mdi) максимизирован, и я хочу, чтобы окно детей (оконных форм) оставалось на экране и не могло быть перенесено за пределы монитора. В основном, как остановить детей от возможности вытащить из экрана.

Любые мысли?

+1

У вас есть окно MDI рамки и два ребенка MDI? Если они являются родителями MDI, они не могут пересекать родительскую границу MDI. –

ответ

2

This может быть ответ на ваш вопрос:

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. Он слегка мерцает, даже если включена двойная буферизация, но это лучшее решение, которое я нашел.

+0

Большое вам спасибо, это именно то, что я искал. – Mike

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