テキストのない四角形のようなサイズのラベルですが、境界線があり、非表示です (コントロールの周りのフォーム上の視覚的な四角形の場合、コントロールは含まれません) またはパネルですか?
3 に答える
使用したいのは GroupBox です。それが本当に重要というわけではありませんが、ラベルはパネルよりも安価であるべきです。
答えは次のとおりです。どちらがフットプリントが小さいかは関係ありません。そうである場合は、設計上の問題があります (つまり、フォームにコントロールが多すぎるなど)。とにかく、仕事に合ったコントロールを使用する必要があります。この場合は、Panel または GroupBox です。
これが本当に問題である場合、コントロール間を視覚的に分離する最善の方法は、各タブ ページの Paint イベントを処理し、e.Graphics.FillRectangle(...) を使用してセパレーターを描画することです。そうすれば、非常に多くのコントロールを取り除くことができます。
各タブ ページの各コントロールの下に四角形を描画するだけの簡単な操作ができない場合は、フォーム上で 1 回実行するコード生成ルーチンを記述し、タブ ページごとに次のようなものを生成できます (ページ上のすべての区切りコントロールを反復処理することによって):
List<Rectangle> rects = new List<Rectangle>();
rects.Add(new Rectangle(10, 40, 200, 5)); // position of first separator
rects.Add(new Rectangle(10, 80, 200, 5)); // position of second separator
// etc.
次に、これらの生成されたコード ルーチンをアプリケーションにコピー アンド ペーストし、次のように各ページの Paint イベントに使用します。
SolidBrush brush = new SolidBrush(Color.PeachPuff);
foreach (Rectangle rect in rects)
{
e.Graphics.FillRectangle(brush, rect);
}
次に、タブ コントロールからすべての区切り記号を削除します。List<Rectangle>
最終的に得られるのは、インスタンス化してフォームの Load イベントまたはそのコンストラクター (生成されたコードを使用)に入力するタイプの配列(ページごとに 1 つのリスト) です。
しかし、エドが言ったことを繰り返さなければなりません。.Net フォームには実際に問題なく多くのコントロールを設定できるため、フォームにコントロールが多すぎることに起因する問題が発生した場合は、全体を再設計する方がよい場合があります。