2

ラベルと進行状況バーを含むユーザー コントロールを作成しました。また、フロー方向がトップダウンに設定されたフロー レイアウト パネルのみを含む別のユーザー コントロールも作成しました。前者を後者のフロー レイアウト パネルに追加する場合、ラベルとプログレス バーのデフォルトの高さが維持されるように、使用可能な最大量の水平スペースと最小量の垂直スペースを使用したいと考えています。これを行う方法はありますか?

問題の説明に役立つスクリーンショットをアップロードしました。ラベルと進行状況バーを含むユーザー コントロールは赤で、フロー レイアウト パネルを含むユーザー コントロールは緑です。

4

3 に答える 3

5

問題は、コントロールを実際に「フロー」させたくないためだと思います。ホストコントロールの最上位の位置を消費させたいだけです。代わりに通常の Panel コントロールを使用するだけで、必要な結果を得ることができます。子ユーザー コントロールをコンテナー コントロールの Controls コレクションに追加し、追加したユーザー コントロールの Dock を後で "Top" に設定するだけです。

        ChildDisplay dsp1 = new ChildDisplay();
        pnlHost.Controls.Add(dsp1);
        dsp1.Dock = DockStyle.Top;

        ChildDisplay dsp2 = new ChildDisplay();
        pnlHost.Controls.Add(dsp2);
        dsp2.Dock = DockStyle.Top;

        ChildDisplay dsp3 = new ChildDisplay();
        pnlHost.Controls.Add(dsp3);
        dsp3.Dock = DockStyle.Top;

注: [ChildDisplay] を、使用している UserControl の名前に置き換えます。

于 2009-07-01T02:08:28.730 に答える
2

ユーザーコントロールのDockプロパティを「トップ」に設定するだけです...

UserControl.Dock = System.Windows.Forms.DockStyle.Top;
于 2009-06-17T13:36:54.093 に答える
1

コントロールの配置とレイヤー化が難しい場合があります。緑のフロー コントロールの Dock プロパティが Fill に設定されていることを確認します。その後、ラベル コントロールの配置を開始し、配置を開始します。必要に応じて Dock プロパティを Top に設定することもできますが、ほとんどの場合、私はそれがあまり好きではありません。特に Dock プロパティを使用する場合に、コントロールの位置を設定する際に覚えておくべき最も重要なことの 1 つは、順序が重要であるということです。コントロールが表示されない場合 (つまり、他のコントロールの後ろに隠れているように見える場合)、親 (この場合はフロー コントロール パネル) に追加される方法を並べ替えてみてください。VS でデザイナーを使用している場合は、右クリックして [上/下に送信] コマンドを使用してこれを行うことができます (Dock プロパティを使用する場合に非常に便利です。

また、私の意見では、見過ごされがちなオプションはControl.Anchorの適切な使用です。それを見ることをお勧めします。

于 2009-06-17T14:33:30.717 に答える