2011-12-27 10 views
2

子フォームを作成する方法はメインフォームに従います。子フォームはメインフォームに従います

たとえば、winform [.net2]を開くと、winformはフォームを開き、メインフォームが動いている場合はフォームをフォローします。

enter image description here

+0

。それは本当に、2つの形態である必要はありますか?あなたは何をしようとしているのですか? – IAbstract

+0

彼はおそらくPaint.NETのツールウィンドウに似た何かをしようとしています。 –

+0

実際にそうすることができますか?メインフォームの位置を移動するときには、児童はそれに追従して距離を保つ必要があります。 –

答えて

2

MainFormのLocationChangedイベントを使用して、常にChildFormの場所を設定します。

の作業例:

Form childForm = new Form(); 

public Form1() { 
    InitializeComponent(); 

    childForm.Width = this.Width; 
    childForm.Height = 96; 
    childForm.Location = new Point(this.Left, this.Bottom); 
    childForm.Show(); 
    this.LocationChanged += Form1_LocationChanged; 
} 

private void Form1_LocationChanged(object sender, EventArgs e) 
{ 
    if (childForm != null) 
     childForm.Location = new Point(this.Left, this.Bottom); 
} 
+0

完璧!入力していただきありがとうございます。 –

+0

OnLoadメソッドでこれを行うことはかなり重要です。投稿されたコードは、あなたの開発マシンでのみ動作します。 OnLoadでのみ、ユーザー設定とフォームスケーリングが適用されたメインフォームの実際のサイズが適用されます。 –

0

表面的に簡単な答えはただのMainFormを移動またはサイズ変更し、それに応じてchildform場所とサイズを設定したときのハンドラを追加することです。

ただし、メインフォームが移動して子フォームが画面外になるのを止めたいとしますか? 子フォームを独立して移動できますか? 最小化と最大化はどうですか?

あなたは他の構成、一人の子供よりNORE、左、右、メインフォーム上の子フォーム...

は、レイアウトクラスを書いて、それを切っすべてこのようなものを無理に勧め価値があるしたい場合があります。

+0

メインフォームとサブフォームはどちらも静的なサイズです。分も最大限もありません。 –

関連する問題