2009-05-28 24 views
2

私は別のフォームから継承されたwinformsフォームを持っています。別のフォームクラスから継承するフォームでForm_Loadイベントが発生しない

class StartForm : aSyncDialog 

はaSyncDialogは私がStartFormでloadイベントが発射されていないことに気づいたonloadイベント

protected override void OnLoad(EventArgs e) 

が、1つはあるのOnLoadを持っています。

private void StartForm_Load(object sender, EventArgs e) 

実行するために親クラスまたはサブクラスのいずれかに配置する必要があるものはありますか?

答えて

4

あなたはこの理由は、Formクラス内のOnLoadメソッドは、Loadイベントを発生させることであるaSyncDialog

でのOnLoadのオーバーライドからbase.OnLoad(e)を呼び出していることを確認してください。

aSyncDialogのOnLoadメソッドをオーバーライドし、base.OnLoadを呼び出さないと、イベントは発生しないため、aSyncDialogのサブクラスには処理するイベントがありません。

+1

実際にはC#の –

+0

おかげトーマス島base.OnLoad(e)のですが、私はエラーを取得私の頭 –

+0

のうち、VBを取得することはできません。 「名 『MyBase』は現在のコンテキスト内に存在しない」 –

2

System.Windows.Formクラス内のOnLoadメソッドは、Loadイベントにフックされたすべてのイベントハンドラーを実際に呼び出すメソッドです。 OnLoadの実装をオーバーライドしているので、イベントハンドラは決して呼び出されません(あなたのケースではStartForm_Load)。

正しく動作させるには、Patrickが提案しているようにBase.OnLoadを呼び出す必要があります。実際には、ベースメソッドを実行したくない場合を除いて、オーバーライド時に常にベースメソッドを呼び出す必要があります。