web-dev-qa-db-ja.com

WinFormsでドッキング順序を制御する方法

タイトルが示すように、アイテムがコントロールの最上部にドッキングする順序を制御する方法を探しています。

Windowsフォームデザイナーで遊んだことがありますが、RightClick->Order->SendToFrontがやっているのは、それが正確に私がしたいことだからです。できる限り、コンテンツをコントロールに追加すると、最新のコンテンツが常に最上部になり、新しいコンテンツが最下部になり、最も古いコンテンツが最下部になります上。

要約:WinForms(C#)に、コントロールの側面にドッキングする順序を制御する簡単な方法はありますか?

Edit:コントロールを追加するときにコードビハインドからこれを行う必要があります。 WinFormのデザイナーですが、私がやろうとしていることは、WinFormsデザイナーのSendToBackおよびSendToFront機能を模倣しています

67
caesay

次の方法を使用します。

myControl.SendToBack();
myControl.BringToFront();
68
serhio

[表示]→[他のウィンドウ]→[ドキュメントのアウトライン]に移動します。

そのウィンドウでコントロールをドラッグして、ドッキングが好きなようになります。

130
Stormenet

既に述べたように、コントロールコレクションに追加された最新のコントロールが一番上にあります。新しいコントロールを下部に追加する必要がある場合は、コントロールのリストを作成し、リストにコントロールを追加し、リストを逆にして、リストをコントロールコレクションに追加することをお勧めします。

List<Control> controls = new List<Control();
controls.Add(new myFirstControl());
controls.Add(new mySecondControl());
controls.Reverse();
this.Controls.AddRange(controls.ToArray());
11
Alexandre Pepin

コントロールがControlsコレクションに追加される順序によって、ドッキングの順序が決まります。

4
Oliver Hanappi

コントロールには、BringToFrontSendToBackの2つのメソッドがあります。

4
Gerrie Schenck

(別のオプションを表示するため):Visual Studio 2012(およびそれ以降):

  1. 前面(または背面)に移動するコントロールを選択します。
  2. 下のマークされたボタンをクリックします(前面に移動/背面に送信)。 enter image description here

これにより、コントロールを希望の順序に並べ替えることができます。

2
Arthur Zennig

このプログラムを実行する場合、これを実現する非常に簡単な方法があることに注意してください。

containerPanel.Controls.SetChildIndex(Element, 0); //sends element to the bottom of the list
0
Jack