2009-08-29 8 views
19

WinFormsにUIまたはコンテナーを追加すると、後で追加されたコンポーネントが以前に追加されたコンポーネントの上に表示され、上位レイヤーに表示されます。WinForm UIコンポーネントレイヤーオーダー

コンポーネントを追加した後にそのレイヤオーダーまたはコンポーネントオーダーを変更するにはどうすればよいですか?

答えて

27

コンポーネントをコードやデザイナで動的に読み込むのは、それですか?それがデザイナーの場合は、フォーマット - >注文 - >返信フォーマット - >注文 - >前へコマンドを使用することができます。 および先頭に移動は、コントロールを右クリックしたときにコンテキストメニューで使用できるほか、フォームデザイナーで作業するときに自動的に表示される「レイアウト」ツールバーでも使用できます。

4

Z-Orderで試しましたか?

参照:Control.SentToBackメソッド - ほとんどのWinformコントロールはこれをサポートする必要があります。

30

複数のコントロールを同じ場所に配置すると、一方が上になり、他方が下になります。通常、アンカーとドッキングの機能を誤って使用しているなどの小さなミスの結果ですしかし、場合によっては、特定のエフェクトのコントロールをオーバーラップさせたい場合があります。

コントロールがオーバーラップすると、どのコントロールが上に終わるかを決定するZインデックスです。実際には、すべてのコントロールは固有の番号付きレイヤに存在します.Zインデックスレイヤ1を持つコントロールは、通常、コントロールのグループのZ-インデックスは、コントロールを追加する順序によって決まります。最後に追加するコントロールは常に最上位レイヤーになります(z-インデックス0)。

ただし、これらのオプションは変更できます。

コントロールのZ-インデックスを決定または設定するには、コントロールコレクションのGetChildIndex()およびSetChildIndex()メソッドを使用できます。ここでは、コントロールをZ-インデックスの3番目のレイヤーに移動する例を示します。

Controls.SetChildIndex(ctrl, 2); 

通常、あなたが検索グレインcontrol.Insteadこの種の必要はありません、あなただけのZインデックスのバック(最下層)に制御を落としたり、持って帰りたいと思うでしょうコントロールに右クリックしてFronに移動またはBack to Sendを選択することによって、この機能を実行できます。Control.BringToFront()またはControl.SendToBack()のメソッドを使用して同じタスクをプログラムで実行することもできます。

+0

私はそれが役に立ちました。また、GetChildIndexが実行時にどのコントロールが上にあるのかを知ることができます。おかげさまで –

11

「ドキュメントアウトライン」パネルを開いて、現在のフォーム/コントロールのツリー構造を表示し、コンポーネントをドラッグして「上」と「下」をドラッグして前面と下に移動することもできます後ろに、またコンテナに出入りする。

+1

>その他のウィンドウ> DocumentOutlineまたはショートカットを使用Ctrl + W、U –