ContainerControlをベースとして使用して、単純なカスタム パネルを作成しました。カスタム プロパティを追加して、境界線とグラデーションの背景を作成しました。OnPaint と OnPaintBackground をオーバーライドすると、親のすべての子コントロールがグラデーションと境界線のスタイルを継承します。回避策として、親の BackgroundImage プロパティを使用しました。これは正常に機能しますが、ランダムな癖がいくつかあります。この問題にアプローチするより良い方法が必要ですが、解決策が見つかりませんでした。これを修正するための相互運用機能またはその他の C# メソッドを介した Window API 関数はありますか? もしそうなら、例を挙げてください。
編集!コピーされるスタイルは次のとおりです (見苦しい例ですが、要点を説明します)。
編集2!これは、すべてのプロパティ、デザイナー属性などを含まない単純なハードコードされた ContainerControl です。
public class Container : ContainerControl
{
protected override void OnPaintBackground( PaintEventArgs e )
{
using ( var brush = new LinearGradientBrush( e.ClipRectangle, Color.Red, Color.Blue, LinearGradientMode.Vertical ) )
{
e.Graphics.FillRectangle( brush, e.ClipRectangle );
}
}
}