他のクラスが継承する Form 基本クラスを含む Visual Studio 2010 Windows Forms アプリがあります。基本クラスのコンストラクターは、子クラスが基本クラスに渡すパラメーターを受け取ります。
例:
public partial class BaseForm : Form
{
public BaseForm(int number)
{
InitializeComponent();
}
}
public partial class ChildForm : BaseForm
{
public ChildForm(int number)
: base(number)
{
InitializeComponent();
}
}
私が遭遇している問題は、VisualStudio のデザイン ビュー モードで ChildForm を開こうとすると、次のエラーが表示されることです。
'MyProject.BaseForm' 型のコンストラクターが見つかりません。
注: エラーに関係なく、プロジェクトはコンパイルされ、正常に実行されます。
パラメータを含まないコンストラクタでコンストラクタをオーバーロードすると、エラーを回避できます。
例: (これによりエラーが解消されます)
public partial class BaseForm : Form
{
public BaseForm(int number)
{
InitializeComponent();
}
public BaseForm()
{
InitializeComponent();
}
}
public partial class ChildForm : BaseForm
{
public ChildForm(int number)
: base(number)
{
InitializeComponent();
}
}
私の質問は、パラメーターなしのコンストラクターを含まない基本クラスを作成し、デザイン ビュー エラーを回避するにはどうすればよいかということです。
ベストアンサー1
それは全く不可能だ。
デザイン ビューに表示されるフォームは、基本クラスの実際のインスタンスです。
既定のコンストラクターがない場合、デザイナーはそのインスタンスを作成できません。
コンストラクターを でマークし[Obsolete("Designer only", true)]
、デザイナー以外で呼び出された場合に例外をスローするようにして、他の人が呼び出さないようにすることができます。