2009-07-31 24 views
1

私は他のフォームを開くメインフォーム内のフレームとエリアの一種として機能するメインフォームを持つアプリケーションを持っています。これらのフォームは今までので、新しいものは私が初めてそれを開くには、このコードを使用して開かれたときに閉じてはいけません。Form.Show()はわずかにフォームの位置を移動します

frm.WindowState = FormWindowState.Maximized; 
frm.BringToFront(); 

そして別のフォームは、その上に開いて、私はそれを表示する必要があります場合は再び私はちょうど使用する:

私は最初にフォームの位置を完全に開いて、境界線がうまく整列するときに問題が発生します。 frm.Show()を使用して戻すと、左と右にわずかに移動します。任意の手掛かりはなぜですか?あなたの説明から

答えて

2

は、私は(私が間違っているなら、私を修正)あなたはMDI子フォームを含むように親フォームを使用している理解

新しいMDI子フォームが表示されたら、それはその子のように配置されますフォームは「カスケード」にあります。つまり、各子フォームは、前のものと同じ位置にオフセットを加えた位置にあります。子フォームを非表示にして再度表示すると、おそらくそれが新しい子フォームであるとみなされ、それに応じて配置されます。

隠す前に子フォームの位置を保存する必要があると思いますあなたはそれを復元できるように、あなたは再び

+0

20種類もあるので、それぞれの場所を保存して追跡する必要がありますか?または、この特定の場所でfrm.Show()と言うだけの方法がありますか? – novacara

+0

子フォームのコード自体の位置を追跡できます...異なるタイプの子フォームがある場合は、これを処理して継承する基本MdiChildクラスを作成します –

5

をそれを表示するとき、あなたは

または

frm.StartPosition = System.Windows.Forms.FormStartPositionフォームのプロパティウィンドウで「手動」に開始位置のプロパティを設定する必要があります。マニュアル;

関連する問題