4

WinForms と ASP.NET の両方で使用する、純粋にグラフィカルなカスタム コントロールを開発したいとします。コントロールは、いくつかのプロパティ設定と関連するルールに基づいて、画像をレンダリングします。

明らかに、コードを WinForms バージョンから ASP.NET バージョンに複製することもできますが、それは、エラーが見つかった場合、またはルールが変更された場合、2 つのバージョンを更新する必要があることを意味します。

必要なさまざまなプロパティとルールを使用して、コア クラスを作成できます。WinForms および ASP.NET コントロール クラスには、このコア クラスを指すプロパティが次のように含まれます。

public class MyControlCore
{
    // all properties and control rules

    public void PaintTo(Graphics graphics)
    {
        // rendering of control
    }
}

public class MyWinFormsControl: Control
{
    public MyWinFormsControl(Control parent): base(parent)
    {
        CoreControl = new MyControlCore();
    }

    public MyControlCore CoreControl { get; private set; }

    protected override OnPaint(object sender, PaintEventArgs e)
    {
        CoreControl.PaintTo(e.Graphics);
    }
}

これは機能しますが、プロパティ グリッドではCoreControl、カスタマイズ プロパティを含む property を取得します。サブ プロパティを持つプロパティMyControlCoreの代わりに、プロパティ グリッドにプロパティを表示する方法はありますか?CoreControl

関連するクラスでこれを達成できるTypeDescriptionProviderのではないかと考えていましたが、どのように進めればよいのか、それが私が望んでいる結果をもたらすのかさえわかりません。これはデザイナーでのみ役立つことを理解していますが、それで問題ありません。

4

1 に答える 1

2

別の選択肢があります。部分クラスを使用して、両方のプロジェクトからリンクできる単一のファイルに共通コードを配置できます。

于 2013-02-03T14:21:12.443 に答える