1

情報ラベルを表示するCustomControlを作成しました。これは、矢印ボタンで最小化/復元できます。

ここに画像の説明を入力してください

フォームの上部にドッキングする必要があります。

次に、同じ形式で、通常、すべての通常のコントロールを備えた中央のパネルがあります。ここでは、強調表示するためだけに黄色で表示されています。

ここに画像の説明を入力してください

最後に、フォームで使用できるすべてのコマンド/ボタンを含む下部パネルがあります。これは下部にドッキングされています。

問題は、トップパネルを折りたたんだときに、使用可能なスペースを自動的に消費するようにセンターパネルを設定する方法がわからないことです。つまり、「センター」ドッキングスタイルはありません。

中央のパネルを上部にドッキングすると、上部のパネルを折りたたむと次のようになります。

ここに画像の説明を入力してください

中央のパネルをすべての端に固定すると、次のようになります。

ここに画像の説明を入力してください

中央のパネルをドッキングして領域を埋めると、他のパネルの存在に関係なく、フォームのすべてのクライアント領域が埋められます。

はい、トップコントロールでイベントを作成して、サイズの変更に関心がある人に通知することはできますが、自動ではないため、これは醜い解決策です。すべてのフォームで、イベントをリッスンし、それに応じて中央のパネルのサイズを変更する必要があります。

この問題に対するエレガントな解決策はありますか?

4

3 に答える 3

2

DockStyle.Fillただし、その中央のコントロールが上部と下部のドッキングされたコントロールの「後ろ」にある場合は、コントロールを並べ替える必要があります。Internall WinFormsは、親に追加された順序でアイテムを処理します。VisualStudio Designerで、塗りつぶしにドッキングされている中央のパネルを右クリックし、[前面に移動]または[背面に移動]を選択します。どちらが手元にないか忘れましたが、そのうちの1つで問題が解決するはずです。

于 2011-05-27T12:56:31.720 に答える
2

DockStyle をFillに設定します。

ここに画像の説明を入力

このコントロールを他の 2 つの後に追加します。確実に他の 2 つの後に来るようにするには、CTRL-X を押してから CTRL-V を押します。

于 2011-05-27T12:52:33.587 に答える
1

Splitコンテナを使用すると問題が解決します。パネルをドラッグし、パネル ドック プロパティを一番上にします (展開/折りたたみボタンがあります)。分割されたコンテナをドラッグし、方向を水平に変更し、ドック スタイルを塗りつぶしに変更します。

ここで、splitcontainer のトップ パネルでカスタム コントロールをドラッグし、ur フォーム コントロールを下部のスプリッター パネルに追加します。hide ur カスタム コントロールを非表示にする場合は、トップ パネルのボタン クリックに次のロジックを記述します。

private void btnExpandCollapseOptions_Click(object sender, EventArgs e)
    {
        if (splMainContainer.Panel1Collapsed)
        {
            splMainContainer.Panel1Collapsed = false;
            btnExpandCollapseOptions.Image = ImageResource.collapseMinus;
//changing image to collapse/expand from imageresource.resx file
        }
        else
        {
            splMainContainer.Panel1Collapsed = true;
            btnExpandCollapseOptions.Image = ImageResource.ExpandPuls;
        }

    }

カスタムコントロールが折りたたまれると、下部のコントロールが合計スペースを占有します

于 2011-08-11T11:18:45.633 に答える