我有一個BaseForm,指定在BaseForm.InitializeComponent()中初始化的幾個受保護的控件。我已經使這些控件受到保護,以便可以在我的DerivedForm中訪問下拉列表等。使這些控件可以被DerivedForm訪問會導致設計器將它們包含在DerivedForm.InitializeComponent()中,它們將它們重置,從而撤消我在BaseForm構造函數中完成的任何其他工作。WinForms繼承InitializeComponent
有沒有辦法在DerivedForm中訪問我的BaseForm控件,但沒有第二次初始化?
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