Событие Form_Load не запускается в форме, которая наследуется от другого класса формы - PullRequest
2 голосов
/ 28 мая 2009

У меня есть форма winforms, которая унаследована от другой формы.

, например

class StartForm : aSyncDialog

aSyncDialog имеет событие onload

protected override void OnLoad(EventArgs e)

Я заметил, что событие загрузки в StartForm не запускается, а событие OnLoad.

private void StartForm_Load(object sender, EventArgs e)

Есть идеи, почему? Что-то, что мне нужно поместить в родительский или подкласс, чтобы запустить его?

Ответы [ 2 ]

4 голосов
/ 28 мая 2009

Убедитесь, что вы вызываете base.OnLoad (e) из переопределения OnLoad в aSyncDialog

Причина этого заключается в том, что метод OnLoad в классе Form вызывает событие Load.

Когда вы переопределяете метод OnLoad в aSyncDialog и не вызываете base.OnLoad, событие не возникает, поэтому подкласс aSyncDialog не имеет никакого события для обработки.

2 голосов
/ 28 мая 2009

Внутри класса System.Windows.Form метод OnLoad - это то, что фактически вызывает все обработчики событий, подключенные к событию Load. Поскольку вы переопределяете реализацию OnLoad, обработчики событий никогда не вызываются (StartForm_Load в вашем случае).

Чтобы это работало правильно, вам нужно вызвать Base.OnLoad, как предлагает Патрик. На практике вы всегда должны вызывать базовый метод при переопределении, если только вы не знаете, что не хотите, чтобы базовый метод выполнялся.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...