1

他のUserControlを追加するUserControlがありますが、「最新の」コントロールを一番上に追加して、他のコントロールよりも上に配置したいと思います。コントロールは互いにオーバーラップする必要があるためです。カードゲームのように。したがって、5つのコントロールを追加します。最初のコントロールは、優先度が最も低く、最も優先度が高く、最も目立つようにする必要があります。

何か案は?

または、「コンテナ」コントロールのPaintメソッドをオーバーライドする必要がありますか?そしてControl.CreateGraphics()とそれを描画しますか?

4

3 に答える 3

2

ControlクラスのBringToFrontメソッドとSendToBackメソッドを検討してください。これらの質問への回答もチェックしてください

WinFormsを使用してコントロールのZオーダーを設定する方法

Winformsコントロールを前面に表示します

于 2012-05-28T14:57:33.347 に答える
1

userControl1.BringToFront()新しいコントロールを追加するときに使用するだけです。

ただし、ユーザーがその下にあるコントロールに「タブで移動」するのを妨げることはありません。そのためには、他のコントロールを無効にするか、非表示にする必要があります。

于 2012-05-28T14:57:28.017 に答える
0

Windowsフォームでは、コントロールが親のControlsコレクションに追加される順序によって、レンダリングの順序が決まります。

これは、コードで子コントロールの追加を処理して適切な挿入位置を使用するか、デザイナー内でコントロールを移動することを意味します(残念ながら、多くの場合、*。Designer.csファイルへの危険な手動編集を意味します)。

とにかく大規模なWinFormsプロジェクトで実行可能な唯一の方法である最初のアプローチを選択し、コードでコントロール挿入ロジックを明示的にすることをお勧めします。ちなみに、良いニュースは、ペイントハンドラーをいじくり回す必要がないことです。そのため、CreateGraphics()の使用などのハッキングについての心配は不当であり、解消されます:)

于 2012-05-28T14:58:05.397 に答える