0

開いたり閉じたりできる2つの子ウィンドウを持つ親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 に答える