2011-06-23 15 views
0

私はいくつかのMDI子ウィンドウを持つC#WinForms MDIアプリケーションを持っています。ユーザーは、個々のウィンドウを移動またはサイズ変更することができます。問題は、ウィンドウをMDI親の境界に移動すると、スクロールバーがMDIParentウィンドウに表示され、ユーザーがMDI親の範囲外に子ウィンドウをドラッグできることです。子ウィンドウが親ウィンドウ内に常にあり、スクロールバーが作成されないように、この動作を変更する方法はありますか?私は、OnMoveイベントをオーバーライドすることによって、子ウィンドウを親ウィンドウの中に戻す方法を知っています。ユーザーがウィンドウを動かしているときでも、ウィンドウを内側に置いておきたい。これを行う方法はありますか?あなたの子フォームでC#WinForms:MDI子ウィンドウを常にMDIParentの範囲内に制限する方法

+0

LocationChangedプロパティのイベントハンドラを作成して移動できるようにする必要があります。率直に言って、あなたは気にしないでください。ちらつきスクロールバーもそれほど美しいものではありません。 –

答えて

0

、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; 
} 

おそらくない素晴らしい結果、必要に応じて、WHT。

テクスチャのサイズを変更する代わりにテクスチャを境界内に戻すように、おそらくそれをやり直すでしょう。

関連する問題