タイプ「リスト」のプロパティを作成している場所にカスタムコントロールを作成しています
Sections は、4 つのプロパティを持つ public クラスです。
コントロール内のコードは次のようになります。
public partial class genericGauge : Control
{
public genericGauge()
{
InitializeComponent();
}
// Stripped out code not needed for this issue question.
private List<Sections> indicators = new List<Sections>();
public List<Sections> Indicators
{
get
{
return indicators;
}
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
// Stripped out code not needed for this issue question.
}
}
セクション クラスは次のとおりです。
public class Sections
{
private string header = "Section1";
public string Header
{
get {return header;}
set
{
header = value;
}
}
private float startvalue = 0.0f;
public float StartValue
{
get { return startvalue; }
set
{
startvalue = value;
}
}
private float sweepvalue = 0.0f;
public float SweepValue
{
get { return sweepvalue; }
set
{
sweepvalue = value;
}
}
private Color sectioncolor = new Color();
public Color SectionColor
{
get {return sectioncolor;}
set
{
sectioncolor = value;
}
}
}
プロパティ ブラウザの typeeditor を使用してデザインタイムに項目をコレクションに追加すると、コレクションに追加された内容を反映するようにコントロールが再描画されないことを除いて、すべて正常に動作しているようです。
テストフォームのコントロールの外側をクリックすると、再描画されます。通常、単純なプロパティでは Invalidate を使用しますが、これはここでは不可能のようです。また、セットアクセサーを持つことが許可されているList<>以外のコレクションタイプでも試しましたが、Invalidateはまだ呼び出されません。SET が呼び出されないことを意味すると思います。
これを展開可能なプロパティで機能させる方法は知っていますが、コレクションでこの更新を行う方法を見つけることができません。
誰かが私を助けてくれることを願っています。前もって感謝します。