4

Visual Studio 2010 で警告メッセージが表示されます (タイトルのメッセージ)。

基本的に、変数、仮想関数の束を持つ一般的なフォームを作成しました。

私が作成したクラスをパラメーターとして取り、それをローカル変数に割り当てます (これは、ゲッターとセッターを使用してプロパティとして配置されます)

次に、このフォームを継承する別のフォームを作成しました。すべて問題なく実行されますが、そのデザイナーを見ようとすると、そのエラー メッセージが表示されます。

    public TAGeneric(TAManager iManager)
    {
        ControlHelper.SuspendDrawing(this);

        mManager = iManager;

        SetStyle(ControlStyles.OptimizedDoubleBuffer |
            ControlStyles.UserPaint |
            ControlStyles.AllPaintingInWmPaint, true);

        InitializeComponent();
        SetupCommandBar();
        ControlHelper.ResumeDrawing(this);
    }

それが親です。

    public TAAddInterval(TAManager iManager) : base(iManager)
    {
        InitializeComponent();
    }

これは子供です。眉をひそめているときに「マネージャー」を使用しているという事実を忘れてください。誰かが問題に光を当てていますか? 文字通り問題なく動作しますが、デザイナーでグラフィック側を編集しようとすると、読み込まれません。

助けてくれてありがとう。

4

2 に答える 2

8

デザイナーが使用するパラメーターなしのコンストラクターを提供する必要があると思います。

public TAAddInterval(TAManager iManager) : base(iManager)
{
    InitializeComponent();
}

[Obsolete("This constructor only exists for the benefit of the designer...")]
public TAAddInterval() : this(null)
{
}

TAManager代わりに何らかの偽物を提供できるNullReferenceException場合は、デザイナーがたまたまマネージャーを使用するコードをヒットした場合にスローされるのを回避できます。

于 2012-09-18T13:04:56.300 に答える
2

おそらく、パラメーターのないコンストラクターが必要なだけで、デザイナーは正常に機能します。

于 2012-09-18T13:05:41.557 に答える