Загрузка пользовательского контроля срабатывает каждый раз

У меня есть пользовательский элемент управления, который используется внутри дочернего элемента MDI. Я изменяю видимость этого дочернего элемента MDI, когда он закрыт, делая это.

private void MDIChild_FormClosing(object sender, FormClosingEventArgs e)
{
    e.Cancel = true;
    this.Visible = false;
}

Но когда я изменяю видимость формы MDI на true, запускается событие загрузки пользовательского элемента управления, даже если загрузка формы не запускается. Но этого не происходит в случае обычной формы окна.

В основном мне нужно отключить функцию закрытия моего ребенка MDI в некоторых случаях.

есть идеи как это сделать?


person Sunil    schedule 17.10.2012    source источник


Ответы (1)


Из документации MSDN для загрузки UserControl событие

Если UserControl является частью дочерней формы MDI, событие Load будет происходить каждый раз при отображении дочерней формы. В этом случае вы должны поместить любой одноразовый код инициализации в UserControl вместо обработчика события Load.

Итак, когда вы показываете форму MDI, этот критерий соблюдается. Это означает, что в этом случае, если вы полагаетесь на событие Load для UserControl, вы должны вместо этого переместить его в другой метод и вызвать его явно, когда отображается ваша форма MDI.

person dash    schedule 17.10.2012
comment
но почему может быть запущено событие Handle_Destroyed пользовательского элемента управления, даже если событие Form_Closing отменено - person Sunil; 17.10.2012
comment
Проверьте, не вышла ли ссылка на пользовательский элемент управления за пределы области действия — это классическая причина, по которой вызывается handle_destroyed. - person dash; 17.10.2012