BaseForm.InitializeComponent()で初期化されているいくつかの保護されたコントロールを指定するBaseFormがあります。これらのコントロールを保護して、私のDerivedFormのドロップダウンなどの値にアクセスできるようにしました。これらのコントロールをDerivedFormにアクセスできるようにすると、デザイナーはこれらをDerivedForm.InitializeComponent()にインクルードし、それらをリセットして、BaseFormコンストラクターで行った追加作業を元に戻します。WinForms継承InitializeComponent
DerivedFormのBaseFormコントロールにアクセスする方法はありますか?2回目の初期化はしていませんか?
public SettingsDialogBase(Settings settings)
{
InitializeComponent();
// Additional work which initializes dropdowns, etc
InitializeSettings();
}
public SettingsDialog(Settings settings) : base(settings)
{
InitializeComponent();
// InitializeSettings() rendered useless on controls that are set to protected
// because SettingsDialog.InitializeComponent() included them automatically
}
[Windowsフォームの継承]の可能な複製(http://stackoverflow.com/questions/826425/windows-form-inheritance) –
私はそうは思わない。私のBaseFormとDerivedFormはどちらも、独自のInitializeComponent()メソッドを正常に呼び出します。問題は、BaseFormコンストラクターがInitializeComponent()の後のコントロールで追加作業を行い、保護されたコントロールであるためです。DerivedFormは独自のInitializeComponent()メソッドを呼び出すときにすべての作業を元に戻します。 – Danielle
派生クラスのコンストラクタから 'InitializeComponent()'を削除します – Fabio