4

GroupBoxを下の画像のようにすることはできますか?カスタム非長方形のGroupBoxを作成するには?

ネイティブコントロールでは不可能な場合は、これをサポートするカスタムのコントロールがありますか?

alt text

+0

ハハ。いいえ。コントロールのレイアウトを変更します。それ以外の場合は、 'ControlPaint.DrawBorder3D'を使用して自分で描画します。実際に役立つと思われるコントロールが作成されます。これはそうではありません。 –

+3

@HPT:1.これは奇妙なコントロールなので、誰もそれを考慮したことはほとんどありません。 2.「どうすればXを作れますか?」と尋ねることで、あなたのスキルは分かりません。前にカスタムコントロールを作成しましたか?または、Visual Studioのインストール中に手を差し伸べる必要がありますか? oyuが有益な回答に興味がある場合は、役に立つ質問を投稿してください。 – peterchen

+0

@peterchen:私はSOが何らかのプロセス中に手を持っているとは思っていません。開発や実装のアイデアを探しました。はい、私はカスタムコントロールを書く方法を知っています。 –

答えて

5

は2つのGroupBoxコントロールを、私は非インテリジェントソリューションを持っていますが、UserControlを作成し、

をあなたの条件に一致する可能性があり、その中に入れて、あなたが持っているでしょうそれらの間の線は、の場合はNoneなしでその上にパネルを追加して非表示にすることができます。

は、その後、あなたがこのユーザーコントロールを持っています:

alt text

私はそれはあなたが望むほどインテリジェントではありません知っているが、それは最初から1と緩いテーマを描画するよりも簡単だかもしれません。

また、ユーザーコントロール

public string Title 
{ 
    get { return groupBox1.Text; } 
    set { groupBox1.Text = value; } 
} 

幸運のタイトルとして垂直グループボックスを反映するためにタイトルのプロパティを作成することができます!

+0

うわー!優れた。 –

+0

私はすぐに彼らの解決策が「非知的」であることを示唆する回答に興味を持っています。その陰謀が良いものなのかどうか分かりません。 –

+0

よく、それはクルージングです。 – peterchen

6

いいえ、そのような制御は、フレームワークに存在しません。 GroupBoxを継承するコントロールを作成することで自分自身を作ることができます。

+5

@HPT:それは完全に合理的な答えIMHOです。彼はあなたに有効な解決法を提案しました。人々があなたのために物事を実装したり、存在しないものを見つけたりすることはできません。 – digEmAll

+2

@HPT、「このようなGroupBoxを作る方法?それに答えた。あなたは実装についての特定の質問をしていないので、私はそれに答えることはできません。また、それがフレームワークに存在しないという事実を知っているので、私はその情報をあなたのために含めることにしました。あなたの質問の残りの部分について - あなたは簡単にGoogleにすることができます。本当に使えるものは何も見つかりませんでした。 – driis

+0

私はこの質問をする前にgoogled。だから、時々グーグル以上のことを知っている専門家がいっぱいです! –

3

あなたはこのようなコントロールを見つけるつもりはありません。 Control.Regionプロパティを使用すると、非長方形のコントロールを作成できます。アウトラインとタイトルを自分で描画する必要があります。その場合は、OnPaintBackgroundオーバーライドで行います。

しかし、このコントロールは、他のフォームやプロジェクトで使用できる再利用可能なコントロールとしてはあまり面白くないでしょう。 はユーザーにグループボックスのように表示されていることを覚えておいてください。とにかく、あなた自身が描画コードを書く必要があるので、フォームのPaintイベントでそれを行うだけです。ラジオボタンのために本当にボックスが必要な場合は、代わりにパネルを使用します。 Form.AutoScaleModeプロパティを覚えておいてください。ライン位置をハードコードすることはできません。あなたが作った画像のように何のコントロールはありません

+0

'GroupBox.Region'プロパティを' GraphicsPath'に設定し、 'ControlPaint'で枠線を描画することは可能ですか? –

+0

本当にありません。 GraphicsPath.Widen()は間違った方向に進みますが、縮小することはできません。 –

関連する問題