2

SplitContainerDock プロパティがFillに設定されているフォームがあります。これにはいくつかの子コントロールが含まれており、その多くにはイベント ハンドラーがアタッチされています。後でStatusStrip、フォームの一番下に a を配置することにしました。StatusStripフォームの下部にドッキングするように設定できません。SplitContainerフォーム全体に入力し続けます。は下にドッキングされているようにStatusStrip見えますが、実際にはその後ろに下の部分が隠れてSplitContainerいます。

それを回避する唯一の方法は、カットしてSplitContainerからペーストすることです。をカットするSplitContainerStatusStrip、フォームの唯一のコントロールになり、下部のドッキングをキャプチャできるようになります。その後、 を貼り付けるSplitContainerことで、残りの領域を埋めることができます。要するに、ドッキングは先着順方式を使用します。

現在、私のコントロールには多くのイベント ハンドラーが関連付けられているため、切り取りと貼り付けは悪夢のようになっています。プロジェクトを C# で作成するということは、これらすべてのイベント ハンドラーを手動でアタッチする必要があることを意味します。

より良い回避策はありますか?

4

1 に答える 1

4

これは、スプリッターとステータスストリップの間の z オーダーの問題です。塗りつぶしをドッキングするコントロールと、上、左、右、または下にドッキングする 1 つ以上のコントロールがある場合、塗りつぶしコントロールを z オーダーの最初にする必要があります。

より良い方法は、ドキュメント アウトライン ツールを開き、SplitContainer を選択し、上下のボタンを使用して z オーダーを変更することです。

Winforms では、Controls コレクションにコントロールを追加する順序によって z オーダーが指定されることを付け加えておきます。この順序によって、関連するシステム コントロールが作成される順序が決まります。つまり、それらの z オーダーが決定されます。ドキュメント アウトライン ツールを使用して z オーダーを変更すると、生成されたコードの順序が変更されるだけです。

于 2013-07-10T21:12:08.130 に答える